我在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标签进行某种手动再生?
答案 0 :(得分:0)
由于行数据在时区变化时没有变化,因此不会重新计算。因此,在更改timeZone下拉列表后,请尝试调用
$scope.gridApi.core.refresh();
这应该重新计算所有值