AngularJS ui-替换数据时网格保持选择状态
AngularJS ui-grid keep selection state when replacing data
我有一个 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 class,它有一个 isSelected
属性 但不知道如何得到它...
这里有一个 Plunk 演示了该行为 - 请注意 selectionCount
在行被替换后也是错误的,因此某处一定有某种选定的项目信息。
Update:似乎替换绑定数组中的项目不会删除 ui-grid 在内部使用的 GridRow(也是 selectedCount 错误的原因)。在替换项目之前调用 unSelectRow
修复了计数,但 GridRow
仍然存在...
最终将 replacementData
中的所有属性复制到旧的 data
对象上。这样选择状态就会保留,并且不会创建新的 GridRow
。
angular.extend($scope.data[i], replacementData);
我有一个 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 class,它有一个 isSelected
属性 但不知道如何得到它...
这里有一个 Plunk 演示了该行为 - 请注意 selectionCount
在行被替换后也是错误的,因此某处一定有某种选定的项目信息。
Update:似乎替换绑定数组中的项目不会删除 ui-grid 在内部使用的 GridRow(也是 selectedCount 错误的原因)。在替换项目之前调用 unSelectRow
修复了计数,但 GridRow
仍然存在...
最终将 replacementData
中的所有属性复制到旧的 data
对象上。这样选择状态就会保留,并且不会创建新的 GridRow
。
angular.extend($scope.data[i], replacementData);