如果 ui-grid 中有一种方法我可以知道网格已完成更新行?(比如正在应用过滤器等)?我想在 GridView 更改后运行一些功能。
我尝试了以下方法:
$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();
});
这个方法的问题是虽然我可以在过滤器改变时得到通知,但是如果网格非常大,它需要一些时间来完成 View 的更新,而在此之前,函数foo( )
在网格更新完成之前被调用。
任何想法将不胜感激。
最佳答案
我见过在 ui-grid-footer-cell.js 中使用 $scope.grid.api.core.on.rowsRendered( $scope, $scope.col.updateAggregationValue );
.我不确定 rowsRendered 何时触发,但考虑到它被用于计算聚合,并且每当行发生更改时聚合都需要知识,并且必须在 rowsProcessors 完成运行后运行,这很可能就是您想要的。
编辑:使用它的框架是:
定义一个当可见行发生变化时要调用的函数
var myFunction = function() { 做一些事情 };
将此函数设置为在呈现行时调用
$scope.gridApi.core.on.rowsRendered( $scope, myFunction );
关于javascript - AngularJS ui-grid 中的网格更改时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30492159/