Angular、browserify、指令控制器不可用
Angular, browserify, directive controllers not available
我正在测试 angular 和 browserify。应该是简单直接的。只是不是:(这是我的问题:
我的 src 文件夹中有一个目录结构,如下所示:
src/
js/
controller/
index.js
controller1.js
......
directive/
index.js
directive1.js
directive2.js
我的 directive/index.js 看起来像这样:
'use strict';
var app = angular.module('seisTools');
app.directive('fillController', require('./fill_controller'));
app.directive('fill', require('./fill'));
我的问题指令如下所示 (fill.js):
'use strict';
module.exports = function(){
return{
restrict: 'A',
scope: {},
require: '^fillController',
link: function (scope, element, attr, ctrl) {
var parent = $(element).parents('[fill]').get(0);
var config = JSON.parse(attr.fill);
ctrl.manageLayout(element, parent, config);
}
}
}
fillController 指令如下所示:
'use strict';
module.exports = function($window, $timeout){
return {
controller: function($scope){
var me = this;
me.manageElement = function(child, parent, config){
console.log('managing an element');
}
}
}
}
它需要 fillController 但 browserify 不提供它。我如何让 browserify 使这个 fillController 可用于我的 fill 指令?我把它们按正确的顺序排列,这应该是同步的,为什么它们不能像在同步环境中那样以正确的顺序创建?
谢谢!
您必须在 HTML 中使用这两个指令才能使 the require
option 正常工作。我推荐这样的东西。
HTML:
<div fill fill-controller></div>
<!-- OR -->
<div fill-controller>
<div fill></div>
</div>
fill.js:
// ...
// This will instruct the directive to look for the fillController directive
// on the same element the fill directive is on or a parent of it
require: '^fillController',
// ...
我正在测试 angular 和 browserify。应该是简单直接的。只是不是:(这是我的问题:
我的 src 文件夹中有一个目录结构,如下所示:
src/
js/
controller/
index.js
controller1.js
......
directive/
index.js
directive1.js
directive2.js
我的 directive/index.js 看起来像这样:
'use strict';
var app = angular.module('seisTools');
app.directive('fillController', require('./fill_controller'));
app.directive('fill', require('./fill'));
我的问题指令如下所示 (fill.js):
'use strict';
module.exports = function(){
return{
restrict: 'A',
scope: {},
require: '^fillController',
link: function (scope, element, attr, ctrl) {
var parent = $(element).parents('[fill]').get(0);
var config = JSON.parse(attr.fill);
ctrl.manageLayout(element, parent, config);
}
}
}
fillController 指令如下所示:
'use strict';
module.exports = function($window, $timeout){
return {
controller: function($scope){
var me = this;
me.manageElement = function(child, parent, config){
console.log('managing an element');
}
}
}
}
它需要 fillController 但 browserify 不提供它。我如何让 browserify 使这个 fillController 可用于我的 fill 指令?我把它们按正确的顺序排列,这应该是同步的,为什么它们不能像在同步环境中那样以正确的顺序创建?
谢谢!
您必须在 HTML 中使用这两个指令才能使 the require
option 正常工作。我推荐这样的东西。
HTML:
<div fill fill-controller></div>
<!-- OR -->
<div fill-controller>
<div fill></div>
</div>
fill.js:
// ...
// This will instruct the directive to look for the fillController directive
// on the same element the fill directive is on or a parent of it
require: '^fillController',
// ...