2016-03-01 60 views
0

我正在使用Angular UI-Grid v3.0.4。我正在使用columndef单元格模板来获取所需的定制,如下所示(我在模板中有ng-blur事件和方法)。角度Ui网格模糊事件不会触发

$scope.gridOptions = { 
      showColumnFooter: true, 
      columnDefs: [ 
         { 
          name: "SalesAmount", displayName: "Sales Amount" 
         }, 
         { 
          name: "CommissionAmount", displayName: "Commission Amount", enableCellEdit: true, enableCellEditOnFocus: true, 
          cellTemplate: '<input type="text" ng-model="row.entity.pddCommissionAmount" ng-blur="updateEntitys(row.entity)"></input>' 
         } 

         ] 
        }; 

ng-blur事件不会触发其执行。研究并添加一个自定义ngblur指令,看看是否有帮助

app.directive('ngBlur', function() { 
    return function (scope, elem, attrs) { 
     elem.bind('blur', function() { 
      scope.$apply(attrs.ngBlur); 
     }); 
    }; 
}); 



$scope.updateEntitys = function (row) { 
      alert("Update Entitys within ngblur event"); 
     } 

这似乎不工作。非常感谢任何帮助。

回答

2

我不太了解ui-grid,但我相当肯定,为什么它不起作用的原因是,所谓的“cellTemplate”中的html永远不会被编译,因为它实际上并不是角模板。我相信你可以使用$compile找到解决方法,将html传递给cellTemplate,同时将对象保存到某个变量,但我也认为这将是一种令人难以置信的方式来做你想做的事(不管是什么?)。

相反,我认为你应该看看有关编辑功能的UI网格文件:http://ui-grid.info/docs/#/tutorial/201_editable

认为这是你真正想要的东西:

$scope.gridOptions.onRegisterApi = function(gridApi) { 
    $scope.gridApi = gridApi; 
    gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) { 
    console.log('edited row id:' + rowEntity.id + ' Column:' + colDef.name + ' newValue:' + newValue + ' oldValue:' + oldValue); 
    $scope.$apply(); 
    }); 
}; 

http://plnkr.co/edit/GJfBpn0kIkhgrPAPUYSb?p=preview