2016-11-30 7 views
0

각도 응용 프로그램의 UI 그리드에 데이터가 표시되고 필드 중 하나가 날짜/시간입니다. 이 값은 rootScope의 값을 모델로 사용하는 응용 프로그램의 주 메뉴 막대에서 선택한 시간대를 기반으로하는 셀 필터에 의해 계산됩니다.모델이 변경 될 때 cellFilter 값을 다시 계산하는 방법은 무엇입니까?

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

..과 값이 같은 cellFilter 정의를 통해 전달된다 :

필터가 현재 (컨트롤러)과 같이 정의된다 ..finally

cellFilter: 'selectedTimeZoneFilter:grid.appScope.timeZone' 

, 전달할 값은 컨트롤러에서 루트 범위에서 설정됩니다.

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

값 표시 - 그리드가 처음 생성 될 때 현재 선택된 시간대 값을 사용하여 날짜/시간을 표시합니다. 그러나 이것은 Angzone이 시간대가 변경 될 때 ($ rootScope.timezone을 모델로 사용하는 선택 상자를 통해) 값을 다시 계산해야한다는 것을 알 수있는 충분한 정보를 제공하지 않는 것 같습니다.

셀 내용이 시간대 선택에 따라 다르므로 변경할 때 셀 내용이 다시 계산되어야하거나 ng-change 태그와 같은 일종의 수동 재생성을 수행해야하는지 Angular에 쉽게 알리는 방법이 있습니까? ?

+0

는이에 대한 plunker를 추가시겠습니까 이것은 모든 값을 다시 계산해야

$scope.gridApi.core.refresh(); 

를 호출 시도 – Bhavjot

답변

0

행 데이터가 시간대 변경시 변경되지 않으므로 다시 계산하지 않습니다. 그래서, 시간대 드롭 다운의 변경 후,