Angularjs 当一行处于编辑模式时,禁用ng grid的其他行中的编辑
功能性 我有一个ng网格。一列有一个“编辑”按钮。单击编辑按钮后,“编辑”按钮将被禁用,“取消”和“删除”将被启用,行的所有列都将变为可编辑 问题Angularjs 当一行处于编辑模式时,禁用ng grid的其他行中的编辑,angularjs,ng-grid,Angularjs,Ng Grid,功能性 我有一个ng网格。一列有一个“编辑”按钮。单击编辑按钮后,“编辑”按钮将被禁用,“取消”和“删除”将被启用,行的所有列都将变为可编辑 问题 <html> <head> <link data-require="ng-grid@*" data-semver="2.0.14" rel="stylesheet" href="//cdn.rawgit.com/angular-ui/ng-grid/v2.0.14/ng-grid.css" /> <
<html>
<head>
<link data-require="ng-grid@*" data-semver="2.0.14" rel="stylesheet" href="//cdn.rawgit.com/angular-ui/ng-grid/v2.0.14/ng-grid.css" />
<script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.11/ng-grid.debug.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-app="myApp">
<div ng-controller="myCtrl">
<div class="gridStyle" ng-grid="gridOptions"></div>
</div>
<button ng-show="row.entity.edit" id="cancelBtn" type="button" class="btn btn-primary" ng-click="cancel(row)" >Cancel</button>
</div>
</body>
</html>
var m = angular.module("myApp", ["ngGrid"]);
m.controller("myCtrl", function($scope) {
//console.log("Here I need to know which button was selected " + row.entity.name)
var removeTemplate = '<input type="button" value="remove" ng-click="removeRow(row)" />';
var ageTextBoxTemplate = '<div class="ngCellText"><div ng-show="!row.entity.edit[{{row.rowIndex}}]">{{row.getProperty(col.field)}}</div>' +
'<div ng-show="row.entity.edit[{{row.rowIndex}}]" class="ngCellText"><input type="text" ng-model="row.entity.age"/></div></div>';
var nameTextBoxTemplate = '<div class="ngCellText"><div ng-show="!row.entity.edit">{{row.getProperty(col.field)}}</div>' +
'<div ng-show="row.entity.edit" class="ngCellText"><input type="text" ng-model="row.entity.name"/></div></div>';
var editButtonTemplate = '<button ng-show="!row.entity.edit" id="editBtn" type="button" class="btn btn-primary" ng-click="edit(row)" >Edit</button>' +
'<button ng-show="row.entity.edit" id="cancelBtn" type="button" class="btn btn-primary" ng-click="cancel(row)" >Cancel</button> ' +
'<button ng-show="row.entity.edit" id="saveBtn{{row.rowindex}}" type="button" class="btn btn-primary" ng-click="save(row)" >Save</button> ';
//var checkboxTemplate='<input type="checkbox" ng-model="row.entity.object.dude" ng-click="toggle(row)">';
var checkboxTemplate = '<input ng-show="!row.entity.edit" type="checkbox" ng-model="row.entity.object.edit" disabled=true>' +
'<input ng-show="row.entity.edit" type="checkbox" ng-model="row.entity.object.edit">';
$scope.tempdata = {
name: "",
age: "",
flag: false
}
$scope.edit = function(row) {
row.entity.edit[row.rowIndex] = ! row.entity.edit[row.rowIndex];
$scope.tempdata.name = row.entity.name;
$scope.tempdata.age = row.entity.age;
$scope.tempdata.flag = row.entity.object.edit;
};
$scope.cancel = function(row) {
row.entity.edit = !row.entity.edit;
row.entity.name = $scope.tempdata.name;
row.entity.age = $scope.tempdata.age;
row.entity.object.edit = $scope.tempdata.flag;
};
$scope.save = function(row) {
row.entity.edit = !row.entity.edit;
if($scope.tempdata.flag === row.entity.object.edit){
alert("value not changed");
}
console.log(row.entity);
};
$scope.removeRow = function(row) {
var index = row.rowIndex;
$scope.gridOptions.selectItem(index, false);
$scope.myData.splice(index, 1);
};
$scope.myData = [{
name: "Rajesh",
age: 27,
edit: false,
object: {
edit: true
}
},
{
name: "Saurav",
age: 31,
object: {
edit: true
}
},
{
name: "Rajubabu",
age: 32,
object: {
edit: false
}
}, {
name: "Joby",
age: 37,
object: {
edit: true
}
}, {
name: "Manish",
age: 41,
object: {
edit: false
}
}, {
name: "Sidhansu",
age: 31,
object: {
edit: true
}
}
];
$scope.gridOptions = {
data: 'myData',
enableRowSelection: true,
//showSelectionCheckbox: true,
enablePaging: true,
enableColumnResize: true,
columnDefs: [{
field: 'name',
displayName: 'Name',
cellTemplate: nameTextBoxTemplate
}, {
field: 'age',
displayName: 'Age',
cellTemplate: ageTextBoxTemplate
}, {
displayName: 'Edit/Cancel/Save',
cellTemplate: editButtonTemplate
}, {
displayName: 'Delete',
cellTemplate: removeTemplate
}, {
field: 'edit',
displayName: 'edit',
cellTemplate: checkboxTemplate
}
]
};
});
我可以一次编辑多行。这不是预期的行为
预期行为
当一行已经处于编辑模式时。我点击了另一行的编辑按钮,上一个可编辑的行应该变成不可编辑的。
-->应还原上一行中已编辑的值。
-->给定点上只有一行可以编辑
以下是我尝试过的链接。
html代码
<html>
<head>
<link data-require="ng-grid@*" data-semver="2.0.14" rel="stylesheet" href="//cdn.rawgit.com/angular-ui/ng-grid/v2.0.14/ng-grid.css" />
<script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.11/ng-grid.debug.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-app="myApp">
<div ng-controller="myCtrl">
<div class="gridStyle" ng-grid="gridOptions"></div>
</div>
<button ng-show="row.entity.edit" id="cancelBtn" type="button" class="btn btn-primary" ng-click="cancel(row)" >Cancel</button>
</div>
</body>
</html>
var m = angular.module("myApp", ["ngGrid"]);
m.controller("myCtrl", function($scope) {
//console.log("Here I need to know which button was selected " + row.entity.name)
var removeTemplate = '<input type="button" value="remove" ng-click="removeRow(row)" />';
var ageTextBoxTemplate = '<div class="ngCellText"><div ng-show="!row.entity.edit[{{row.rowIndex}}]">{{row.getProperty(col.field)}}</div>' +
'<div ng-show="row.entity.edit[{{row.rowIndex}}]" class="ngCellText"><input type="text" ng-model="row.entity.age"/></div></div>';
var nameTextBoxTemplate = '<div class="ngCellText"><div ng-show="!row.entity.edit">{{row.getProperty(col.field)}}</div>' +
'<div ng-show="row.entity.edit" class="ngCellText"><input type="text" ng-model="row.entity.name"/></div></div>';
var editButtonTemplate = '<button ng-show="!row.entity.edit" id="editBtn" type="button" class="btn btn-primary" ng-click="edit(row)" >Edit</button>' +
'<button ng-show="row.entity.edit" id="cancelBtn" type="button" class="btn btn-primary" ng-click="cancel(row)" >Cancel</button> ' +
'<button ng-show="row.entity.edit" id="saveBtn{{row.rowindex}}" type="button" class="btn btn-primary" ng-click="save(row)" >Save</button> ';
//var checkboxTemplate='<input type="checkbox" ng-model="row.entity.object.dude" ng-click="toggle(row)">';
var checkboxTemplate = '<input ng-show="!row.entity.edit" type="checkbox" ng-model="row.entity.object.edit" disabled=true>' +
'<input ng-show="row.entity.edit" type="checkbox" ng-model="row.entity.object.edit">';
$scope.tempdata = {
name: "",
age: "",
flag: false
}
$scope.edit = function(row) {
row.entity.edit[row.rowIndex] = ! row.entity.edit[row.rowIndex];
$scope.tempdata.name = row.entity.name;
$scope.tempdata.age = row.entity.age;
$scope.tempdata.flag = row.entity.object.edit;
};
$scope.cancel = function(row) {
row.entity.edit = !row.entity.edit;
row.entity.name = $scope.tempdata.name;
row.entity.age = $scope.tempdata.age;
row.entity.object.edit = $scope.tempdata.flag;
};
$scope.save = function(row) {
row.entity.edit = !row.entity.edit;
if($scope.tempdata.flag === row.entity.object.edit){
alert("value not changed");
}
console.log(row.entity);
};
$scope.removeRow = function(row) {
var index = row.rowIndex;
$scope.gridOptions.selectItem(index, false);
$scope.myData.splice(index, 1);
};
$scope.myData = [{
name: "Rajesh",
age: 27,
edit: false,
object: {
edit: true
}
},
{
name: "Saurav",
age: 31,
object: {
edit: true
}
},
{
name: "Rajubabu",
age: 32,
object: {
edit: false
}
}, {
name: "Joby",
age: 37,
object: {
edit: true
}
}, {
name: "Manish",
age: 41,
object: {
edit: false
}
}, {
name: "Sidhansu",
age: 31,
object: {
edit: true
}
}
];
$scope.gridOptions = {
data: 'myData',
enableRowSelection: true,
//showSelectionCheckbox: true,
enablePaging: true,
enableColumnResize: true,
columnDefs: [{
field: 'name',
displayName: 'Name',
cellTemplate: nameTextBoxTemplate
}, {
field: 'age',
displayName: 'Age',
cellTemplate: ageTextBoxTemplate
}, {
displayName: 'Edit/Cancel/Save',
cellTemplate: editButtonTemplate
}, {
displayName: 'Delete',
cellTemplate: removeTemplate
}, {
field: 'edit',
displayName: 'edit',
cellTemplate: checkboxTemplate
}
]
};
});
取消
JavaScript代码
<html>
<head>
<link data-require="ng-grid@*" data-semver="2.0.14" rel="stylesheet" href="//cdn.rawgit.com/angular-ui/ng-grid/v2.0.14/ng-grid.css" />
<script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/ng-grid/2.0.11/ng-grid.debug.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body>
<div ng-app="myApp">
<div ng-controller="myCtrl">
<div class="gridStyle" ng-grid="gridOptions"></div>
</div>
<button ng-show="row.entity.edit" id="cancelBtn" type="button" class="btn btn-primary" ng-click="cancel(row)" >Cancel</button>
</div>
</body>
</html>
var m = angular.module("myApp", ["ngGrid"]);
m.controller("myCtrl", function($scope) {
//console.log("Here I need to know which button was selected " + row.entity.name)
var removeTemplate = '<input type="button" value="remove" ng-click="removeRow(row)" />';
var ageTextBoxTemplate = '<div class="ngCellText"><div ng-show="!row.entity.edit[{{row.rowIndex}}]">{{row.getProperty(col.field)}}</div>' +
'<div ng-show="row.entity.edit[{{row.rowIndex}}]" class="ngCellText"><input type="text" ng-model="row.entity.age"/></div></div>';
var nameTextBoxTemplate = '<div class="ngCellText"><div ng-show="!row.entity.edit">{{row.getProperty(col.field)}}</div>' +
'<div ng-show="row.entity.edit" class="ngCellText"><input type="text" ng-model="row.entity.name"/></div></div>';
var editButtonTemplate = '<button ng-show="!row.entity.edit" id="editBtn" type="button" class="btn btn-primary" ng-click="edit(row)" >Edit</button>' +
'<button ng-show="row.entity.edit" id="cancelBtn" type="button" class="btn btn-primary" ng-click="cancel(row)" >Cancel</button> ' +
'<button ng-show="row.entity.edit" id="saveBtn{{row.rowindex}}" type="button" class="btn btn-primary" ng-click="save(row)" >Save</button> ';
//var checkboxTemplate='<input type="checkbox" ng-model="row.entity.object.dude" ng-click="toggle(row)">';
var checkboxTemplate = '<input ng-show="!row.entity.edit" type="checkbox" ng-model="row.entity.object.edit" disabled=true>' +
'<input ng-show="row.entity.edit" type="checkbox" ng-model="row.entity.object.edit">';
$scope.tempdata = {
name: "",
age: "",
flag: false
}
$scope.edit = function(row) {
row.entity.edit[row.rowIndex] = ! row.entity.edit[row.rowIndex];
$scope.tempdata.name = row.entity.name;
$scope.tempdata.age = row.entity.age;
$scope.tempdata.flag = row.entity.object.edit;
};
$scope.cancel = function(row) {
row.entity.edit = !row.entity.edit;
row.entity.name = $scope.tempdata.name;
row.entity.age = $scope.tempdata.age;
row.entity.object.edit = $scope.tempdata.flag;
};
$scope.save = function(row) {
row.entity.edit = !row.entity.edit;
if($scope.tempdata.flag === row.entity.object.edit){
alert("value not changed");
}
console.log(row.entity);
};
$scope.removeRow = function(row) {
var index = row.rowIndex;
$scope.gridOptions.selectItem(index, false);
$scope.myData.splice(index, 1);
};
$scope.myData = [{
name: "Rajesh",
age: 27,
edit: false,
object: {
edit: true
}
},
{
name: "Saurav",
age: 31,
object: {
edit: true
}
},
{
name: "Rajubabu",
age: 32,
object: {
edit: false
}
}, {
name: "Joby",
age: 37,
object: {
edit: true
}
}, {
name: "Manish",
age: 41,
object: {
edit: false
}
}, {
name: "Sidhansu",
age: 31,
object: {
edit: true
}
}
];
$scope.gridOptions = {
data: 'myData',
enableRowSelection: true,
//showSelectionCheckbox: true,
enablePaging: true,
enableColumnResize: true,
columnDefs: [{
field: 'name',
displayName: 'Name',
cellTemplate: nameTextBoxTemplate
}, {
field: 'age',
displayName: 'Age',
cellTemplate: ageTextBoxTemplate
}, {
displayName: 'Edit/Cancel/Save',
cellTemplate: editButtonTemplate
}, {
displayName: 'Delete',
cellTemplate: removeTemplate
}, {
field: 'edit',
displayName: 'edit',
cellTemplate: checkboxTemplate
}
]
};
});
var m=angular.module(“myApp”,“ngGrid”);
m、 控制器(“myCtrl”,函数($scope){
//log(“这里我需要知道选择了哪个按钮”+row.entity.name)
var removeTemplate='';
var ageTextBoxTemplate='{{row.getProperty(col.field)}}'+
'';
var nameTextBoxTemplate='{{row.getProperty(col.field)}}'+
'';
var editbuttonemplate='Edit'+
“取消”+
“保存”;
//var checkboxTemplate='';
var checkboxTemplate=''+
'';
$scope.tempdata={
姓名:“,
年龄:“,
旗帜:假
}
$scope.edit=函数(行){
row.entity.edit[row.rowIndex]=!row.entity.edit[row.rowIndex];
$scope.tempdata.name=row.entity.name;
$scope.tempdata.age=row.entity.age;
$scope.tempdata.flag=row.entity.object.edit;
};
$scope.cancel=函数(行){
row.entity.edit=!row.entity.edit;
row.entity.name=$scope.tempdata.name;
row.entity.age=$scope.tempdata.age;
row.entity.object.edit=$scope.tempdata.flag;
};
$scope.save=函数(行){
row.entity.edit=!row.entity.edit;
if($scope.tempdata.flag==row.entity.object.edit){
警报(“值未更改”);
}
console.log(row.entity);
};
$scope.removeRow=函数(行){
var index=row.rowIndex;
$scope.gridOptions.selectItem(index,false);
$scope.myData.splice(索引,1);
};
$scope.myData=[{
姓名:“拉杰什”,
年龄:27岁,
编辑:false,
对象:{
编辑:真
}
},
{
姓名:“Saurav”,
年龄:31岁,
对象:{
编辑:真
}
},
{
姓名:“Rajubabu”,
年龄:32岁,
对象:{
编辑:false
}
}, {
姓名:“Joby”,
年龄:37岁,
对象:{
编辑:真
}
}, {
姓名:“曼尼什”,
年龄:41岁,
对象:{
编辑:false
}
}, {
名称:“Sidhansu”,
年龄:31岁,
对象:{
编辑:真
}
}
];
$scope.gridOptions={
数据:“myData”,
enableRowSelection:true,
//showSelectionCheckbox:true,
enablePaging:true,
enableColumnResize:true,
columnDefs:[{
字段:“名称”,
displayName:'名称',
cellTemplate:nameTextBoxTemplate
}, {
字段:“年龄”,
displayName:“年龄”,
cellTemplate:ageTextBoxTemplate
}, {
displayName:“编辑/取消/保存”,
cellTemplate:editButtonTemplate
}, {
displayName:“删除”,
细胞模板:removeTemplate
}, {
字段:“编辑”,
displayName:“编辑”,
cellTemplate:checkboxTemplate
}
]
};
});
如果您能提供一份完整的解决方案,我们将不胜感激。请保持表格模式。所以,如果有人点击编辑按钮,设置编辑模式。现在在编辑按钮模板上添加ng disable,如果mode=edit,则返回true。。当有人点击save/cancel(保存/取消)将模式重置为view(查看)时…我这里没有使用表。我的意思是说在$scope上创建一个变量。比如$scope.tableMode,您应该在其中维护表的模式