我有两个ng-grid居住在同一个$scope
,他们都有一列可编辑的单元格,即:enableCellEdit: true
我知道我可以像这样处理触发事件:
$scope.$on('ngGridEventEndCellEdit', function(event) {
var product = event.targetScope.row.entity;
console.log(product);
});
问题是..我怎么知道哪个网格触发了这个事件?两个网格都使用不同的列表(网格的data
属性),但这些列表包含相同类型的实例。
event
中是否包含网格ID?
答案 0 :(得分:0)
我遇到了同样的麻烦并且解决了这个问题。
我有三个网格,每个cellEditableTemplate我在单元格上注册ng-click,从而选择单元格编辑的开始和结束事件的下一个来源。仅设置全局变量setMethod()
$scope.thisGridUpdate
$scope.targetTypeDefs = [ {
field : 'id',
displayName : '#',
enableCellEdit : false,
width : 50
}, {
field : 'desc',
displayName : 'Type Description',
enableCellEdit : true,
cellEditableCondition : 'row.selected',
editableCellTemplate : '<input ng-class="\'colt\' + col.index" \
ng-input="COL_FIELD" \
ng-model="COL_FIELD" \
ng-model-options="{ updateOn : \'default blur\' }" \
ng-click="setMethod(\'saveTargetType\')"/>'
} ];
$scope.targetTypeGrid = {
data : 'targetTypeData',
showSelectionCheckbox : true,
selectWithCheckboxOnly : true,
multiSelect : false,
enableCellEditOnFocus : true,
columnDefs : 'targetTypeDefs'
};
接下来,您只需捕获并捕获正常ngGridEventEndCellEdit
事件使用者中的结束单元格编辑事件,如下所示:
$scope.setMethod = function(name) {
console.log("clicked on ", name);
$scope.thisGridUpdate = name;
};
$scope.$on('ngGridEventEndCellEdit', function(evt, other) {
console.log("ended edit on ", $scope.thisGridUpdate, "with " , evt.targetScope.row.entity);
console.log(evt.targetScope.row);
if ($scope.thisGridUpdate === 'saveServerType') {
EntityMgt.saveServerType(evt.targetScope.row.entity);
}
else if ($scope.thisGridUpdate === 'saveOsVersion') {
EntityMgt.saveOsVersion(evt.targetScope.row.entity);
}
else if ($scope.thisGridUpdate === 'saveTargetType') {
EntityMgt.saveTargetType(evt.targetScope.row.entity);
}
});