Require.JS で Angular.JS を使用しています。私のファイル構造は以下に似ています(例のために簡略化されています):
main.js
require( ['controllers', 'directives/priceBox', 'directives/slider'], function() {
angular.bootstrap(document, ['myApp']);
});
app.js
define(['angular'], function (angular) {
return angular.module('myApp', []);
});
ディレクティブ/slider.js:
define(['app', 'jquery-ui', 'directives/priceBox'], function (app) {
'use strict';
app.directive('slider', function() {
return {
restrict: 'A',
template: '<div id="slider"></div>',
replace: true,
require: 'priceBox',
link: function(scope, el, attrs, priceBoxCtrl){
}
};
});
});
ディレクティブ/priceBox.js
define(['app'], function (app) {
app.directive('priceBox', function() {
return {
restrict: 'A',
template: '<div id="price">{{ price }}</div>',
replace: true,
controller: function ($scope) {
console.log('Hi from controller');
}
}
});
});
ここで必要なのは、ディレクティブpriceBox
でコントローラーにアクセスすることです。slider
ただし、このコードではError: No controller: priceBox
エラーが発生します。