Sto cercando di capire qual è il miglior approccio GENERICO per comunicare tra direttiva padre e figlio con ambiti isolati (potrebbero essere oggetti riutilizzabili).
significa che se direttiva bambino ha bisogno di aggiornare la direttiva genitore in qualche modo (entrambi hanno isolato scopi), devo passare una funzione di callback:
esempio:
.directive('filterReviewStepBox', function() {
return {
restrict: 'EA',
scop: {
//some data
},
template: '<div>text<reusable-dir></reusable-dir call-back="foo"></div>',
link: function (scope, elem, attrs) {
scope.foo = function() {
console.log('bar');
};
}
};
}).directive('reusableDir', function() {
return {
restrict: 'EA',
scope: {
callBack: '=callBack'
//other data
},
template: '<div>text<button type="button" ng-click="bar"></button></div>',
link: function (scope, elem, attrs) {
scope.bar = function() {
scope.callBack();
}
}
};
});
o dovrei usare $ emettere():
es:
directive('filterReviewStepBox', function() {
return {
restrict: 'EA',
scope: {
// some data
},
template: '<div>text<reusable-dir></reusable-dir></div>',
link: function (scope, elem, attrs) {
scope.$on('foo', function() {
console.log('bar');
});
}
};
}).directive('reusableDir', function() {
return {
restrict: 'EA',
scope: { //some data
},
template: '<div>text<button type="button" ng-click="bar"></button></div>',
link: function (scope, elem, attrs) {
scope.bar = function() {
scope.$emit('foo');
};
}
};
});
Sento che emettono sarebbe più facile da capire su scala più ampia, ma preoccupato per le prestazioni e le spese generali, ma Im ancora incerto
provato a cercare il miglior approccio online, ma Im ancora calpestati
EDIT
ho dimenticato il
richiedere
opzione. ma non sono ancora sicuro che questa sia la soluzione più corretta. Dato che questo non mi permette di riutilizzare il bambino o il nipote e il tipo di rende la direttiva un oggetto monouso.
c'è l'opzione 'require' che consente di accedere controllore di un'altra direttiva. questo dovrebbe consentire di fare ciò che vuoi. – ieaglle
Vedo cosa stai dicendo ... non ci ho pensato ... ma cosa succede se voglio che il bambino sia riutilizzabile? allora il tuo approccio non può essere usato. –
Vedere la mia modifica –