Des directives multiples pour un élément peuvent-elles partager une portée isolée?
Deux directives sur le même élément ne peut pas à la fois avoir isolé champ d'application, mais peuvent-ils utilisent tous les deux la même portée isolés de leurs parents? Et ils peuvent à la fois utiliser les propriétés liées au isolés portée?
Par exemple, si j'ai deux directives sur un élément
<e-directive a-directive prop="parentProp"/>
Et la directive définit un cas isolé portée avec une propriété liée
App.directive('eDirective', function() {
return {
restrict: 'E',
scope: {
localProp: '=prop'
},
...
};
});
L'autre directive obtenir que la portée et peut-il utiliser la propriété liée?
App.directive('aDirective', function() {
return {
restrict: 'A',
link: function postLink(scope, element, attrs) {
scope.$watch('localProp', function(newProp, oldProp) {
...
}
},
...
};
});
Ma première tentative (assez bien codé comme ci-dessus) a échoué.
source d'informationauteur Robert Antonucci
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de faire usage de la communication entre les directives " contrôleurs via l'exigent propriété du secondaire de la directive. La première directive (e-directive) détient les isolés portée, tandis que le second helper directive (la directive) a une référence à la première directive et définit les propriétés via les fonctions définies sur la première directive. Un petit échantillon (voir plunker):
et le javascript:
Au lieu de l'isoler champ d'application, les directives pouvez créer un nouvel enfant, qui sera partagé par les deux directives. Si vous avez besoin de modifier
parentProp
dans une directive, d'injecter et de l'utilisation$parse
:Javascript:
violon
Si les deux directives ont besoin de créer des propriétés à l'enfant nouveau champ d'application, de l'utilisation une sorte de convention de nommage pour éviter les collisions de noms. E. g.,
scope.eDirProp1 = ...
etscope.aDirProp1 = ...
.Oui en utilisant
element.isolateScope()
par exemple (ou voir violon):HTML
JS
sortie de la console