如何在模型更改时重新计算cellFilter值?

时间:2016-11-30 11:38:43

标签: javascript angularjs ui-grid

我在Angular应用程序的ui-grid中显示数据,其中一个字段是日期/时间。这是通过单元过滤器计算的,基于在应用程序主菜单栏中选择的时区,该时区使用rootScope中的值作为模型。

过滤器当前定义如下(在控制器上):

.filter('selectedTimeZoneFilter', function() {
  return function(value, timeZone) {
    return moment(value).tz(timeZone.value).format('DD/MM/YY HH:mm');
  };
})

..并通过像这样的cellFilter定义传递值:

cellFilter: 'selectedTimeZoneFilter:grid.appScope.timeZone'

..最后,要传递的值在根控制器的控制器中设置:

var vm = this;
vm.timeZone = $rootScope.timezone;

这对于值的初始显示很好 - 当首次生成网格时,它使用当前选定的时区值来显示日期/时间。但是,这似乎没有给Angular足够的信息知道在时区发生变化时应该重新计算值(通过使用$ rootScope.timezone作为模型的选择框)。

是否有一种简单的方法可以告诉Angular细胞内容是否依赖于时区选择,需要在更改时重新计算,还是需要使用ng-change标签进行某种手动再生?

1 个答案:

答案 0 :(得分:0)

由于行数据在时区变化时没有变化,因此不会重新计算。因此,在更改timeZone下拉列表后,请尝试调用

$scope.gridApi.core.refresh();

这应该重新计算所有值