あるディレクティブのコントローラーを別の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
現在の要素に加えて、現在の要素より上の要素をチェックします。したがって、これを機能させるには、2つのディレクティブを一緒に使用する必要があります。それ以外の場合は、でコントローラーを定義してapp.controller
から、両方のディレクティブで使用します。いずれにせよ、これをHTMLコードと一緒に単純なプランカーに入れることができますか?