UIGRID:在columnDefs中更改cellFilter没有很好地更新

时间:2015-11-26 14:29:41

标签: angularjs angular-ui-grid

我需要动态更改列的小数精度。 我尝试了不同的方法,但没有一种方法有效。

我在Plunker做了一个快速示例,其中有一个交换数据的按钮。它们具有不同的数据和不同的columnDef:一个具有3个小数,另一个具有4个小数。 你可以看到第一行保持第一种格式。

我在gridApi中使用notifyDataChange但不适用于此类更改:

$scope.gridApi.core.notifyDataChange( this.uiGridConstants.dataChange.ALL );

这对我来说是个问题,因为在我的情况下,我希望保留相同的数据,但动态更改列的小数精度。

有人知道如何刷新/重新加载新的columnDefs配置吗? 我真的很喜欢它!

2 个答案:

答案 0 :(得分:0)

可悲的是,似乎没有一种刷新/更新网格的常用方法都适用于这个用例。

我设法通过删除所有行然后在$timeout之后重新创建它来使其工作。

我更新了你的plunker here

主要编辑内容如下:

 $scope.swapData = function() { 
    $scope.gridOpts.data = []{
    $timeout(function() {
      if (!$scope.isData2) { 
        $scope.gridOpts.data = data2;
        $scope.gridOpts.columnDefs = columnDefs2;
      }
      else {
        $scope.gridOpts.data = data1;
        $scope.gridOpts.columnDefs = columnDefs1;
      }
      $scope.isData2 = !$scope.isData2;  
    });
  };

答案 1 :(得分:0)

看起来ui-grid github repo上有一个answer

来自撰稿人:

  

在单元格中,cellFilter与单元格模板一起加入   获取/使用模板。它没有得到实时更新。

可能的解决方案:

<server>
            <id>nexus</id>
            <username>deploy</username>
            <password>deploy</password>
        </server>
        <server>
            <id>nexus-admin</id>
            <username>admin</username>
            <password>admin123</password>
        </server>