我之前通過創建一個自定義指令來除了ng-repeat之外還使用了這個。因此,例如
<div ng-repeat="foo in bar" myDirective>
什麼,讓你的是,在myDirective
您可以訪問該指令的範圍,並在NG重複渲染檢查的最後一個項目。例如,這是我所使用的吳重複渲染一些元素同位素jQuery庫:
angular
.module('myModule')
.directive('myDirective', function ($timeout) {
return {
restrict: 'A',
link: function postLink(scope, element, attrs) {
if (attrs.ngRepeat && scope.$last) {
$timeout(function() {
$('#myContainer').isotope({
layoutMode: 'fitRows'
});
});
}
}
};
});
此使用HTML,如:
<div id="myContainer" ng-repeat="foo in bar" myDirective>
<div class="element">{{foo}}</div>
</div>
應該給你你在找什麼對於。
只需用$('#myContainer').isotope({})
替換ng-repeat完成渲染重複時要執行的操作即可。
當數據發生變化時,使用$ timeout service在延遲後調用維度修飾符?我不知道你是否有任何事件被角度觸發,當它完成dom操作 –
@RanjithR時,我確實想到了使用$ timeout,但它似乎是一個糟糕的選擇,因爲要麼我必須設置一個大的值間隔是安全的(這會產生閃爍),或者當列表很大時,當Angular仍在修改DOM並且列表將被放置,就好像它小於實際的那樣。但是,這是我走的路我猜如果沒有人可以建議在數據綁定完成時調用函數的確定性方式。 –
有一種方法。如果角度處於摘要或應用階段,您可以編寫一個遞歸函數,該函數在100ms之類的短暫超時後調用自身。如果它不是摘要或應用階段,那麼您可以調用展示位置。 –