Có hai cách để làm điều này:
1 ng-init
function controller($scope) {
$scope.items = [{id: 1, name: 'one'}, {id: 2, name: 'two'}];
$scope.initRepeaterItem(index, item) {
console.log('new repeater item at index '+index+':', item);
}
}
<ul>
<li ng-repeat="item in items" ng-init="initRepeaterItem($index, item)"></li>
</ul>
2 MutationObserverhơi phức tạp hơn
Làm điều này trong một chỉ thị , trên phần tử có cha mẹ nhận con mới en (<ul>
trong trường hợp này)
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// you get notified about DOM mutations here
// check mutation.type if it was an insertion
console.log(mutation.target.nodeName, mutation.type, mutation);
});
});
var config = {childList: true, attributes: false, characterData: false,
subtree: false, attributeOldValue: false, characterDataOldValue: false};
observer.observe(element[0], config);
Demo http://plnkr.co/h6kTtq
Documentation https://developer.mozilla.org/en/docs/Web/API/MutationObserver
Browser support http://caniuse.com/mutationobserver
Về thao tác dom trong bộ điều khiển, nó [nói ở đây] (https://groups.google.com/forum/?fromgroups=#!topic/angular/ u52B5bVzdqs) mà bạn không nên làm điều đó cả. Nó nên đi theo một chỉ thị. Tại sao nó không hoạt động, tôi không biết, nhưng có lẽ vì góc cạnh vẫn đang chạy công cụ riêng của nó vào thời điểm này. – Narretz
Tôi đoán bạn sẽ có thể có được một giải pháp tốt hơn nếu bạn có thể giải thích lý do tại sao hoặc vì lý do gì bạn đang cố gắng truy cập vào phần tử dom mới. Nếu bạn có thể giải thích rằng bạn có thể sẽ nhận được câu trả lời để giải quyết vấn đề của bạn theo cách góc cạnh. – ganaraj