ng根据范围变量重复过滤

时间:2014-08-26 03:40:05

标签: angularjs angularjs-ng-repeat angular-digest

我有以下使用ng-repeat来显示博客文章:

data-ng-repeat="post in posts | filter: {category: filterCategory} | limitTo:12 ">

'filterCategory'是一个范围变量,我通过点击一组列表项来更改:

<li class="filter" ng-repeat="post in (posts | unique: 'category._id' )" ng-click="setFilterCategory(post.category._id)">

受以下控制:

 $scope.setFilterCategory = function(id) {
        $scope.filterCategory = id;
 }

问题是,当用户点击其中一个列表项并且 setFilterCategory()更改范围中的 filterCategory 时,会暂时显示所有帖子(好像没有过滤器),然后应用过滤器。我想避免这种转换,直接从前一个过滤器转到下一个过滤器。我有什么可以做的吗?

我认为这与摘要周期有关,但我没有足够的经验来说明我应该改变什么,如果有的话。

编辑#1:
我试图用小提琴(http://jsfiddle.net/igorauad/w4mkny0e/)重现,但没有成功。它在这个小提琴中工作正常,而在我的应用程序中它需要更长时间。我不知道它是否有所作为,但在我的应用程序中,我从资源加载帖子,而在小提琴中它们是静态声明的。

1 个答案:

答案 0 :(得分:-2)

如果问题在于延迟范围,请尝试使用此方法。

 $scope.setFilterCategory = function(id) {
      $scope.$apply(function(){
        $scope.filterCategory = id;
      });
 }

如果您仍然看到问题,可以创建plunker或JSfiddle或任何