$ rootScope:分页过滤数据时出现infdig错误

时间:2014-07-02 13:26:46

标签: angularjs pagination

我正在使用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;错误消失(但显然它没有进行任何过滤),所以我猜我的代码存在问题。

1 个答案:

答案 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>