2016-11-30 40 views
0

我有数据显示在Angular应用程序的ui网格中,其中一个字段是日期/时间。这由单元过滤器计算,基于在应用程序的主菜单栏中选择的时区,该时区使用rootScope中的值作为其模型。如何在模型更改时重新计算cellFilter值?

该过滤器是目前这样定义(在控制器上):

.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' 

..finally,要通过的值在根范围内设置在控制器中:

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

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

是否有一种简单的方法可以告诉Angular单元格内容取决于时区选择,需要在其更改时重新计算,还是需要使用类似ng-change标签的方式进行某种手动重新生成?

+0

能否请你添加一个plunker此 – Bhavjot

回答

0

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

$scope.gridApi.core.refresh(); 

这应该重新计算所有值