Quelqu'un peut-il me dire comment inclure un contrôleur d'une directive dans une autre directive angularJS. par exemple j'ai le code suivant
var app = angular.module('shop', []).
config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/', {
templateUrl: '/js/partials/home.html'
})
.when('/products', {
controller: 'ProductsController',
templateUrl: '/js/partials/products.html'
})
.when('/products/:productId', {
controller: 'ProductController',
templateUrl: '/js/partials/product.html'
});
}]);
app.directive('mainCtrl', function () {
return {
controller: function ($scope) {}
};
});
app.directive('addProduct', function () {
return {
restrict: 'C',
require: '^mainCtrl',
link: function (scope, lElement, attrs, mainCtrl) {
//console.log(cartController);
}
};
});
De toute évidence, je devrais pouvoir accéder au contrôleur dans la directive addProduct mais je ne le suis pas. Existe-t-il une meilleure façon de le faire?
require
assure la présence d'une autre directive et inclut alors son contrôleur.^require
vérifie les éléments au-dessus de l'élément actuel en plus de l'élément actuel. Vous devez donc utiliser les deux directives ensemble pour que cela fonctionne. Sinon, définissez simplement un contrôleur avecapp.controller
, puis utilisez-le dans les deux directives. Quoi qu'il en soit, pouvez-vous mettre cela dans un simple Plunker avec votre code HTML?