控制器中的AngularJS过滤器大集合没有$ watch()

时间:2015-01-21 06:03:37

标签: angularjs angularjs-ng-repeat

我正在开发一个需要在屏幕上显示相当大量数据的应用程序。此外,此数据采用表格格式,不幸的是,页面上会出现几个重复的重复数据。因此,为了加快速度,我预先过滤控制器中的数据而不是视图。

所以,例如,不要做这样的事情:

app.controller('PersonController', function($scope, People) {
    $scope.items = People.query(); 
});

<div ng-repeat="item in items | orderBy:'name'"></div>

我正在尝试做这样的事情:

app.controller('PersonController', function($scope, People) {
    $scope.items = People.query();
    $scope.filteredItems = $filter('orderBy')($scope.items, 'name')
});

<div ng-repeat="item in filteredItems"></div>

这最初是有效的,除了我开始尝试在$ scope.items集合上添加/更新/删除项目。这不会触发对$ scope.filteredItems的更新。

我知道我可以使用$ watch在控制器中像这样更新$ scope.filteredItems:

$scope.$watch 'items', (->
    $scope.filteredItems = $filter('orderBy')($scope.items, 'name')
), true  

但是,这并不理想,因为$ scope.items集合非常大,而且这个$ watch调用非常昂贵。

任何人都可以帮我找出更好的方法吗?任何帮助将非常感激! :)

0 个答案:

没有答案