我正在开发一个需要在屏幕上显示相当大量数据的应用程序。此外,此数据采用表格格式,不幸的是,页面上会出现几个重复的重复数据。因此,为了加快速度,我预先过滤控制器中的数据而不是视图。
所以,例如,不要做这样的事情:
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调用非常昂贵。
任何人都可以帮我找出更好的方法吗?任何帮助将非常感激! :)