【问题标题】:AngularJS ui-grid keep selection state when replacing dataAngularJS ui-grid在替换数据时保持选择状态
【发布时间】:2016-03-10 15:44:09
【问题描述】:

我有一个 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 模块 simple 不支持这个,尽管 core 模块 does

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

我在选择模块的文档中找到了这个 GridRow 类,它具有 isSelected 属性,但不知道如何获取它...

这是一个演示该行为的Plunk - 请注意,替换行后selectionCount 也是错误的,因此某处必须有某种选定的项目信息。

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

【问题讨论】:

    标签: angularjs angular-ui-grid


    【解决方案1】:

    最终将 replacementData 中的所有属性复制到旧的 data 对象上。这样一来,选择状态就会被保留,并且不会创建新的GridRow get。

    Updated Plunk

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 2023-03-24
      • 2018-10-05
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多