Hay dos maneras de hacer esto:
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 MutationObserverun poco más compleja
hacer esto dentro de una directiva , en el elemento cuyo padre recibe nuevo hijo en (<ul>
en este caso)
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
En cuanto a manipulación del DOM en el controlador, [dice aquí] (https://groups.google.com/forum/?fromgroups=#!topic/angular/ u52B5bVzdqs) que no deberías hacerlo en absoluto. Debería ir en una directiva. Por qué no funciona, no sé, pero es probable porque angular todavía está ejecutando sus propias cosas en este momento. – Narretz
Supongo que podrá obtener una mejor solución si puede explicar por qué o por qué razón está tratando de acceder al nuevo elemento dom. Si puede explicar que probablemente obtendrá una respuesta para resolver su problema de forma angular. – ganaraj