javascript - AngularJS ui-grid 中的网格更改时如何得到通知?

标签 javascript angularjs angular-ui-grid

如果 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 完成运行后运行,这很可能就是您想要的。

编辑:使用它的框架是:

  1. 定义一个当可见行发生变化时要调用的函数

    var myFunction = function() { 做一些事情 };

  2. 将此函数设置为在呈现行时调用

    $scope.gridApi.core.on.rowsRendered( $scope, myFunction );

关于javascript - AngularJS ui-grid 中的网格更改时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30492159/

相关文章:

javascript - 如何禁用 Select2 和远程数据的某些选项

javascript - 如何在 Angular JS 中重置文件上传控件

javascript - 使用 Math.random 从 JavaScript 中的有限字符集生成随机集

javascript - 页面加载时未加载 Angular-ui-router 状态

javascript - ng 内重复指令

javascript - ui-router 不能在 nodejs 文件夹中工作,但可以在 plunker 上工作

尝试保存状态时 angular-ui-grid gridApi 未定义

javascript - Angular + ui-grid + 计算列总数

javascript - `angular-ui-grid` 中的工具提示无法正常工作

基于选项选择的 Javascript 显示/隐藏