在AngularJS中检测自定义过滤器的完成时间

时间:2013-11-28 14:38:46

标签: angularjs angularjs-ng-repeat angularjs-filter

我有一个自定义过滤器功能,我正在调用ng-repeat指令:

<div ng-repeat="app in appVm.appList | filter:appVm.assetFilter">{{app.title}}</div>

这显然会为appList中的每个应用程序点击我的assetFilter函数。过滤完成后,我想运行另一个功能。

如何检测过滤通道何时完成?

更新

根据指向我towards other answers的回复,我可以进一步澄清。

当我使用自定义指令实现该解决方案并使用范围。$ last时,我会观察到以下内容:

  • 首次呈现页面并填充列表时,它按预期工作 - 检测到最后一项。
  • 当我的过滤器功能被触发并且项目从列表中删除时,指令处理程序根本不会被命中。
  • 当相同的项目被添加回列表中,但它们不是列表中的最后一项时,指令被命中,但仅针对要添加的项目,并且没有具有范围的项目。$ last of true。

希望这有助于澄清。

1 个答案:

答案 0 :(得分:1)

ng-repeat为每个重复的元素创建一个范围。此范围包括$first$last,因此您可以添加检查这些

的指令

HTML

<div ng-repeat="item in items"  check-last>

指令:

app.directive('checkLast',function(){
  return{
    restrict:'A',
    link:function(scope,elem,attrs){
      if(scope.$last){
            /* repeater done code*/
      }
  }
  } 
})

DEMO