누구든지 한 지시문의 컨트롤러를 다른 angularJS 지시문에 포함하는 방법을 알려줄 수 있습니까? 예를 들어 다음 코드가 있습니다.
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);
}
};
});
모든 계정으로 addProduct 지시문에서 컨트롤러에 액세스 할 수 있어야하지만 그렇지 않습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
require
다른 지시문이 있는지 확인한 다음 해당 컨트롤러를 포함합니다.^require
현재 요소 외에도 현재 요소 위에있는 요소를 확인합니다. 따라서 이것이 작동하려면 두 지시문을 함께 사용해야합니다. 그렇지 않으면 컨트롤러를 정의한app.controller
다음 두 지시문에서 사용하십시오. 어느 쪽이든, 이것을 HTML 코드와 함께 간단한 Plunker에 넣을 수 있습니까?