2016-11-30 39 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(); 

這應該重新計算所有值