AngularJS - 新过滤器应用于 Ng-Repeat 时的回调?

AngularJS - Callback For When a New Filter Has Been Applied to Ng-Repeat?

我有一个看起来像这样的 ng-repeat 元素:

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

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

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

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

使用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