如果在ui-grid中有一種方法可以知道網格正在完成更新行(如正在應用過濾器等)?我想在網格視圖更改後運行一些函數。如何在AngularJS ui-grid中更改網格時收到通知?
我嘗試以下方法:
$scope.filteredRows = $scope.gridApi.core.getVisibleRows($scope.gridApi.grid);
$scope.$watch('filteredRows', function(){console.log('view updated');});
上述方法的工作原理當電網只是完成啓動,在此之後,它將不再工作。
我也使用filterChanged
API嘗試:
$scope.gridApi.core.on.filterChanged($scope, function() {
console.log('filter changed');
foo();
});
這種方法的問題是,雖然我可以得到通知,當過濾器被改變,但是如果網格是非常大的,它需要一些時間來完成更新視圖,並且在此之前,網格更新完成之前調用功能foo()
。
任何想法將不勝感激。
在編輯中更新以顯示如何使用它 – PaulL
謝謝@PauL,這工作!後續問題,如何讓myFunction()僅在輸入過濾文本時執行並且網格渲染完成。現在myFunction()會在網格發生變化時執行,就像分組,展開和摺疊網格一樣,也會觸發myFunction()。再次感謝您的時間。 – Tony
你也可以監聽filterChanged,並且你可以設置一個標誌+超時值來取消設置該標誌。然後你可以檢查rowRendered中的那個標誌。或者,您可以不用擔心,並在發出rowsRendered時讓函數運行。 – PaulL