我正在使用ng-paginator-plz对我的应用中的某些数据进行分页。我还想在显示之前通过一些过滤器传递这些数据,所以我正在做:
<paginator class="paginator" data="filteredUsers = (users | filter:search)" page-size="20" export-paged-data-to="paginatedUsers"></paginator>
然后通过paginatedUsers显示数据ng-repeat
。如果我删除了过滤,则此方法有效,但过滤器就位时出现[$rootScope:infdig]
错误。
搜索此错误会导致我得到如下答案:$rootScope:infdig error caused by filter? - 这表明问题是因为过滤器正在被多次评估。我该如何解决这个问题?
修改:我已将以下内容添加到我的控制器JS文件中:
$scope.filter = function(){
$scope.filteredUsers = $filter('search')($scope.users);
};
$scope.$watch('search', function() {
$scope.filter();
});
我还在传递depdendencies的顶部添加了$filter
。但是当页面首次加载时以及每当使用过滤器时,这会给出$injector:unpr
错误。如果我将过滤行更改为$scope.filteredUsers = $scope.users;
错误消失(但显然它没有进行任何过滤),所以我猜我的代码存在问题。
答案 0 :(得分:1)
您可以在您认为有必要重新过滤数据的时刻在控制器中手动过滤它,并将过滤后的数据存储在单独的$ scope变量中。
用loDash作为简短。
$scope.filter = function(){
$scope.filteredUsers = _.filter(users, function(user){return user.name.indexOf($scope.search) !== -1;});
// or any kind of angular filters..
}
$scope.$watch('search', _.debounce($scope.filter, 100));
<paginator data="filteredUsers" ....></paginator>