AngularJS Comment appeler la directive de la fonction de contrôleur
je cherchais un moyen de savoir comment appeler la fonction à l'intérieur de la directive à partir du contrôleur. j'ai eu le snip mais d'où je suis nouveau dans angulaire c'est pourquoi le code ci-dessous flux n'est pas très claire. quelqu'un esprit pour expliquer comment le code fonctionne. grâce
<map set-fn="setDirectiveFn(theDirFn)"></map>
<button ng-click="directiveFn()">call directive function</button>
scope: { setFn: '&' },
link: function(scope, element, attrs) {
scope.updateMap = function() {
alert('inside updateMap()');
}
scope.setFn({theDirFn: scope.updateMap});
}
function MyCtrl($scope) {
$scope.setDirectiveFn = function(directiveFn) {
$scope.directiveFn = directiveFn;
};
}
OriginalL'auteur Monojit Sarkar | 2016-05-11
Vous devez vous connecter pour publier un commentaire.
En commençant par le contrôleur, ce bloc crée une
setDirectiveFn()
méthode sur la$scope
objet dans votre contrôleur qui prend un seul paramètre (directiveFn
), puis utilise ce paramètre pour créer undirectiveFn()
méthode sur la$scope
objet dans votre contrôleur.À l'intérieur de la directive, c'est la création d'un
updateMap()
méthode sur lascope
objet de la directive, puis en appelant lasetFn()
méthode qui est mappé à la$scope.setDirectiveFn()
méthode par cette ligne:<map set-fn="setDirectiveFn(theDirFn)"></map>
dans votre code HTML et cette ligne:scope: { setFn: '&' }
dans votre directive. C'est en passant lascope.updateMap()
méthode qui détermine$scope.directiveFn()
dans votre contrôleur égal àscope.updateMap()
dans votre directive.Le bouton, puis de l'appel
$scope.directiveFn()
dans votre contrôleur qui a été cartographiée àscope.updateMap()
dans votre directive.Voici.
OriginalL'auteur Lex
vous pouvez le faire avec angulaire pubsub
OriginalL'auteur aseferov
Je recommande la lecture de cet article : http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-2-isolate-scope
Fondamentalement, votre directive a un
Isolate Scope
fixé parscope: {setFn: '&'}
Ce que ce n'est que lorsque vous pouvez envoyer des données à votre directive par des attributs, dans ce cas, le
set-fn
attribut.dans votre directive, de la portée.setFn contient maintenant la fonction envoyés via l'attribut dans votre code html (
setDirectiveFn(theDirFn)
)Afin de l'appelant
scope.setFn({theDirFn: scope.updateMap});
Appelle la fonction définie dans
OriginalL'auteur Andrew Donovan