哪个ng-grid触发了ngGridEventEndCellEdit?

时间:2014-09-21 06:55:45

标签: angularjs ng-grid

我有两个ng-grid居住在同一个$scope,他们都有一列可编辑的单元格,即:enableCellEdit: true

我知道我可以像这样处理触发事件:

$scope.$on('ngGridEventEndCellEdit', function(event) { 
    var product = event.targetScope.row.entity;

    console.log(product);
});

问题是..我怎么知道哪个网格触发了这个事件?两个网格都使用不同的列表(网格的data属性),但这些列表包含相同类型的实例。

event中是否包含网格ID?

1 个答案:

答案 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);
    }
});