您好我正在尝试避免角度ui网格中的名称重复。
KeySize
这是我的傻瓜:http://plnkr.co/edit/PlUfwRGEezYQVMpXmiIr?p=preview
问题在于它还打开了所有其他行。
我做错了什么?有没有办法只更新到特定的行?
答案 0 :(得分:2)
您可以使用ui-grid-validate(请参阅http://ui-grid.info/docs/#/tutorial/322_validation)。
<div ui-grid="gridOptions" ui-grid-edit ui-grid-cellNav ui-grid-validate class="grid"></div>
在JS中:
uiGridValidateService.setValidator('alreadyIn',
function(argument) {
return function(newValue, oldValue, rowEntity, colDef) {
if (!newValue) {
return true; // We should not test for existence here
} else {
angular.forEach(argument, function(obj, key) {
if (obj.name === newValue) return true;
});
return false;
}
};
},
function(argument) {
return "You can't insert duplicate";
}
);
以下是您更新的plunker:http://plnkr.co/edit/hCVa6hbdlIH2RW4JnYSg
答案 1 :(得分:0)
角度UI-Grid行实体更新步骤:
1.网格列定义。
columnDefs : [
{
field : 'email',
cellTemplate : '<a href="#"
ng-click="grid.appScope.update(row)"> {{COL_FIELD}} </a>'
}
在控制器的$ scope中声明一个变量,即
var selectedRow;
$scope.update = function(myRow) {
$scope.selectedRow = myRow;
$scope.objCopy = angular.copy($scope.selectedRow.entity);
//testing or update from a modal form or get the server copy
$scope.objCopy.email=abc@gmail.com;
$scope.selectedRow.entity = angular.copy($scope.objCopy);
}
引用方法和参数:http://ui-grid.info/docs/#!/api/ui.grid.class:GridRow
答案 2 :(得分:-1)
只需使用您的代码略微修改@Mithun即可查看:
$scope.hasError = function(entity){
var changed = entity.name;
// console.log('changed => '+changed);
var count = 0;
console.log($scope.gridOptions.data)
for (var key in $scope.gridOptions.data)
{
console.log($scope.gridOptions.data[key]);
if ($scope.gridOptions.data[key].name == changed) {
count++;
}
}
if(count>1){
return true;
}
return false;
};
Plunker链接:http://plnkr.co/edit/Lj7vUXR9k1nuOcqvW8u9?p=preview。
希望这符合您的要求