AngularJS - 当新的过滤器应用于Ng重复时回调?

时间:2017-01-05 02:53:16

标签: angularjs callback angularjs-ng-repeat ng-repeat

我有一个ng-repeat元素,如下所示:

<div ng-repeat="message in messages | limitTo: customVariable">

其中customVariable在我的控制器中不断变化。每次更改customVariable时,ng-repeat元素的父/容器元素都会调整其高度,因为不同数量的messages将通过过滤器。

当发生这种情况时,我需要得到父div的前后高度。我可以通过简单调用元素height()方法获得之前的高度。为了能够获得后高,我需要一个回调,我可以在DOM更新之后通过limitTo过滤器的更改传递一个函数。

如何注册这样的回调?如果messages的基础数组(在本例中为ng-repeat)发生更改,我可以使用找到的解决方案here。但在这种情况下,底层数组保持不变。

1 个答案:

答案 0 :(得分:2)

使用as保存过滤结果:

<div ng-repeat="message in messages | limitTo: customVariable as filteredMessages">

然后,您可以从控制器或指令内向此阵列添加观察程序,并对更改做出反应:

$scope.$watch(function() {
  return $scope.filteredMessages;
}, function() {
  // Do something
});

演示: http://plnkr.co/edit/kQeLVJ2zLZCDeokyLqlW?p=preview