Alguém pode me dizer como incluir um controlador de uma diretiva em outra diretiva angularJS. por exemplo, eu tenho o seguinte código
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);
}
};
});
Eu deveria ser capaz de acessar o controlador na diretiva addProduct, mas não sou. Existe um jeito melhor de fazer isso?
require
garante a presença de outra diretiva e, em seguida, inclui seu controlador.^require
verifica os elementos acima do atual, além do elemento atual. Portanto, você tem que usar as duas diretivas juntas para que isso funcione. Caso contrário, apenas defina um controlador comapp.controller
e, em seguida, use-o em ambas as diretivas. De qualquer maneira, você pode colocar isso em um Plunker simples junto com seu código HTML?