如何更新角度ui网格中的相应行

时间:2016-02-19 07:47:28

标签: javascript angularjs angular-ui-grid

您好我正在尝试避免角度ui网格中的名称重复。

KeySize

这是我的傻瓜:http://plnkr.co/edit/PlUfwRGEezYQVMpXmiIr?p=preview

问题在于它还打开了所有其他行。

我做错了什么?有没有办法只更新到特定的行?

3 个答案:

答案 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)">&nbsp{{COL_FIELD}}&nbsp;</a>'
    }
  1. 在控制器的$ 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

希望这符合您的要求