這個問題其實對初學者來說,都 有這樣的經歷,用ng-repeat生成的元素用js怎么也獲取不到;這個其中原由是:angular擁有自動化渲染DOM的特性,它能幫助我們專注於操作數據,而頁面的渲染則由angular自身來完成。這就造成了 ng-repeat 循環完成后angular並不會告訴我們dom渲染完了;換句話說就是不知道angular渲染dom何時完成(得不到生成的元素是因為這個元素還沒有渲染出來)。
也就是說要找一個方法使你知道什么時候angular渲染dom完成了,你再才來操作dom,得到你想要的元素、進行操作。。。。
<div ng-repeat="item in items" on-finish> <div>{{item.name}}}<div>
</div>
//js
var module = angular.module('fang', []) .directive('onFinish', function ($timeout) { return { restrict: 'A', link: function (scope, element, attr) { if (scope.$last === true) { $timeout(function () { scope.$emit('ngRepeatFinished'); }); } } }});
$scope.$on('ngRepeatFinished', function(ngRepeatFinishedEvent) { //這里寫獲取dom的操作,
});
這樣你就可以用js找到ng-repeat生成的元素了;並進行相關元素操作。