我在ngGridEventEndCellEdit
模块中遇到了ng-grid
的问题。
我的目的是当我在ng-grid中更改一个单元格时,我从我的服务中调用一个方法,该方法通过ajax请求返回一些数据。我的代码运行正常。但唯一的问题是,当我更改任何单元格或字段时,它会调用服务方法。
我如何检查特定单元格是否编辑???
关注是我的代码段...
$scope.$on('ngGridEventEndCellEdit', function (data) {
console.log(data.targetScope.row);
costsheetCrudService.getItemByItemCode(data.targetScope.row.entity.ItemCode).then(function (res) {
data.targetScope.row.entity.ItemDescription = res.data.ItemDescription;
data.targetScope.row.entity.ItemCategory = res.data.ItemCategoryName;
data.targetScope.row.entity.ItemID = res.data.ItemID;
data.targetScope.row.entity.ItemCategoryID = res.data.ItemCategoryID;
});
});
答案 0 :(得分:1)
来自documentation on templating:
编辑单元格时,ng-cell-has-focus指令将广播名为 ngGridEventStartCellEdit 的消息,让所有孩子都知道 你现在可以给自己专注。可编辑单元格模板时 完成编辑(通常在模糊事件上)你需要发射 ngGridEventEndCellEdit 让ng-cell-has-focus知道你已经完成了 编辑,然后它将显示不可编辑的单元格模板。该 对此的推理是(好的引用):"现在我可以包装我的输入元素 在divs / span中,无论如何并控制究竟是什么元素的模糊 触发结束编辑" - @swalters。
如果您搜索  ngInput' ng-rgid源代码中的指令, 你会发现这正是这个指令实现的目的 输入元素。 因此,如果您需要创建自己的“细胞编辑器”,那么就是您 可以创建自己的指令,听取和发出 正确的事件,使您的组件按预期工作。
一个例子(用于ng-input指令):
scope.$on( 'ngGridEventStartCellEdit', function () {
elm.focus();
}); //focus the input element on 'start cell edit'
angular.element( elm ).bind( 'blur', function () {
scope.$emit( 'ngGridEventEndCellEdit' );
}); //when leaving the input element, emit the 'end cell edit' event
否则,您可以在发出事件时在控制器内添加逻辑:
if(data.targetScope.col.index === X) {}
if(data.targetScope.row.rowIndex === X) {}
if(data.targetScope.row.entity.something === something else) {}.