Mi chiedo se sia possibile eseguire alcune richiamate solo una volta dopo la valutazione di tutti (o solo alcuni) attributi di direttiva (senza ambito isolato). Gli attributi sono davvero grandi per passare la configurazione alla direttiva. Il fatto è che è possibile osservare ogni attributo separatamente e richiamare più volte la richiamata.
Nell'esempio abbiamo una direttiva senza ambito isolato che osserva due attributi: nome e cognome. Dopo ogni modifica action
richiamata viene licenziato:
html
<button ng-click="name='John';surname='Brown'">Change all params</button>
<div person name="{{name}}" surname="{{surname}}"></div>
js
angular.module('app', []).
directive('person', function() {
return {
restrict: 'A',
link: function($scope, $elem, $attrs) {
var action = function() {
$elem.append('name: ' + $attrs.name + '<br/> surname: ' + $attrs.surname+'<br/><br/>');
}
$attrs.$observe('name', action);
$attrs.$observe('surname', action);
}
}
});
Plunker here.
Così l'effetto è che dopo aver cambiato nome e cognome durante uno scatto, action
callback viene attivato due volte:
name:
surname: Brown
name: John
surname: Brown
Quindi la domanda è: può action
essere licenziato solo una volta sia con nome e valori cognome cambiato?
grazie mille! – iamtankist