【问题标题】:AngularJS - Callback For When a New Filter Has Been Applied to Ng-Repeat?AngularJS - 当新过滤器应用于 Ng-Repeat 时的回调?
【发布时间】:2017-01-05 02:53:15
【问题描述】:

我有一个 ng-repeat 元素,看起来像:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多