2016-12-13 66 views
0

我需要調用一個函數每次 NG重複已經完成呈現視圖。當NG-重複獲取呈現的第一次我碰到一個簡單的解決方案是使用ng-init="$last ? function() : angular.noop其中「功能」是要調用的函數。AngularJS - 檢測結束事件,每次NG重複被重新呈現

同樣地,人們可以編寫自定義指令,因爲例如在ng-repeat finish event但是,到目前爲止我都沒有成功找到一個解決方案,同時工作時,我有一個動態的NG-重複

例如當在中間添加或刪除項目或者當$ last被過濾時在這些情況下將是錯誤的。人們總是可以在列表末尾添加和刪除一個虛擬條目,但這似乎不是一個合適的解決方案。

歡迎任何建議。謝謝。

+0

認沽無論你是該指令的控制器構造函數中的一個指令,你的邏輯中重複 – JMK

回答

0

繼JMK的指教(感謝那個),我做這似乎工作,但看起來有點幼稚---所以任何建議重新改進,歡迎以下。該指令在渲染的開始和結束時調用兩個不同的函數。

HTML

<div ng-repeat="item in itemsArray" on-finish-render="{items: itemsArray}"> 
    {{item}} 
</div> 

JS

.directive("onFinishRender", ["$parse", "$timeout", function ($parse, $timeout) {  
     return { 
      restrict: "A", 
      link: function (scope, element, attr) { 
       var model = $parse(attr.onFinishRender); 
       scope.$watch(model, function (newValue, oldValue) {       
        if (scope.$index === 0) { 
         //At the start do stuff 
        } 
        if (scope.$index === newValue.items.length - 1) { 
         //At the end do some other stuff 
        } 
       }, true); 
      } 
     }; 
    }]);