Utiliser "require" dans la directive pour exiger un contrôleur parent
J'essaie de "besoin" d'un contrôleur de parent (et non la directive), mais AngularJS renvoie une exception. Le code ressemble à ceci:
JS
app.controller("myController", function ($scole) {
...
});
app.directive("myDirective", function ($q) {
return {
require: "^myController",
template: "",
link: function (scope, element, attrs, myCtrl) {
...
}
};
});
HTML
<div ng-controller="myController as myCtrl">
...
<div my-directive>...</div>
...
</div>
Erreur
Erreur: [$compiler:ctreq] Controller 'myController', requis par
directive "myDirective', ne peut pas être trouvé!
Pourquoi?
Peut-être, require
propriété doit être référence à un contrôleur de directive?
Grâce
source d'informationauteur riofly | 2015-06-05
Vous devez vous connecter pour publier un commentaire.
Besoin de l'aide d'autres directives contrôleurs dans une autre directive , veuillez vous référer à l'exemple ci-dessous
Notation
require: "^myController"
signifie que votre directive va essayer d'accéder à un autre directive appeléemyController
et définie sur certains de l'ancêtre des balises commemy-controller
attribut ou<my-controller>
tag. Dans votre cas, vous n'avez pas une telle directive, d'où l'exception.Ce n'est pas très conventionnelle de ce que vous essayez de faire, mais si vous vraiment voulez exiger externe de contrôleur dans votre directive, vous pouvez exiger
ngController
:Cependant, ce n'est pas une très bonne idée. Je ne peux pas imaginer pourquoi vous pourriez avoir besoin d'elle comme ça. Je vous recommande de regarder dans
portée
propriétés de configuration et comment vous pouvez passer exécutable fonction des références dans votre directive de l'extérieur du contrôleur.et dans la directive définir la portée:
où dans le contrôleur de vous aurait
$scope.test = function() {};
. Ensuite, vous n'auriez pas besoin d'exiger contrôleur explicitement dans la directive.