AngularJS ui-grid在替换数据时保持选择状态

时间:2016-03-10 15:44:10

标签: angularjs angular-ui-grid

我有一个ui-grid绑定到一个名为data的对象数组,如下所示:

$scope.grd = {
        enableRowSelection: true,
        multiSelect: true,
        enableRowHeaderSelection: false,
        columnDefs: [
                { field: 'id', name: 'ID' },
                { field: 'name', name: 'Name' },
                { field: 'tags', name: 'Tags' }
        ],
        data: "data"
};

如果我现在替换数组中的项目如下:

$scope.data[i] = replacementData; 

网格正确更新但选择状态丢失。 我想selection模块简单不支持core模块does

有没有办法在更换项目之前获取项目的选择状态?

我在选择模块的文档中发现了这个GridRow类,该文档具有isSelected属性,但没有想法如何获取它...

这是展示行为的Plunk - 请注意,替换行后selectionCount也是错误的,因此某处必须存在某种选定的商品信息。

更新:似乎替换绑定数组中的项不会删除ui-grid内部使用的GridRow(这也是selectedCount错误的原因) 。在替换项目之前调用unSelectRow会修复计数,但GridRow仍然存在...

1 个答案:

答案 0 :(得分:0)

结束复制旧replacementData对象上data的所有属性。这样就保留了选择状态,并且没有创建新的GridRow

Updated Plunk

angular.extend($scope.data[i], replacementData);