link 函数的第 4 个参数
4th argument to the link function
我有一个由另一位开发人员编写的指令,基本上具有以下配置:
{
controller: MyController,
controllerAs: 'myController',
link: function(scope, $element, attrs, ctrl) {
// Does some setup that requires controller
}
}
这很好用,控制器作为第四个参数传递,指令有效。
现在我决定让指令更加灵活、可重用等等。所以,我在指令配置中添加了
require: '?ngModel'
突然,现在我的控制器从未传递给 link 函数。第四个参数没有数组,没有第五个参数,nada。
我尝试将控制器添加到 require
指令 - 但它仍然找不到它。
如何添加require
并传递控制器?
require
表示您需要的指令(在本例中为 ngModelController
)将其控制器作为链接函数的第四个参数发送。默认控制器是指令的,它的链接函数被调用,控制器但需要另一个指令覆盖它(即使它是一个可选的要求并且所需的指令不存在,在这种情况下第四个参数将是 undefined
) .幸运的是,require
可以是一个指令数组,所以这会起作用:
module.directive('myDirective', function() {
return {
controller: MyController,
controllerAs: 'myController',
require: ['myDirective', '?ngModel'],
link: function(scope, $element, attrs, controllers) {
var MyDirectiveController = controllers[0]; //this directive's controller
var ngModelController = controllers[1];
}
};
});
我有一个由另一位开发人员编写的指令,基本上具有以下配置:
{
controller: MyController,
controllerAs: 'myController',
link: function(scope, $element, attrs, ctrl) {
// Does some setup that requires controller
}
}
这很好用,控制器作为第四个参数传递,指令有效。
现在我决定让指令更加灵活、可重用等等。所以,我在指令配置中添加了
require: '?ngModel'
突然,现在我的控制器从未传递给 link 函数。第四个参数没有数组,没有第五个参数,nada。
我尝试将控制器添加到 require
指令 - 但它仍然找不到它。
如何添加require
并传递控制器?
require
表示您需要的指令(在本例中为 ngModelController
)将其控制器作为链接函数的第四个参数发送。默认控制器是指令的,它的链接函数被调用,控制器但需要另一个指令覆盖它(即使它是一个可选的要求并且所需的指令不存在,在这种情况下第四个参数将是 undefined
) .幸运的是,require
可以是一个指令数组,所以这会起作用:
module.directive('myDirective', function() {
return {
controller: MyController,
controllerAs: 'myController',
require: ['myDirective', '?ngModel'],
link: function(scope, $element, attrs, controllers) {
var MyDirectiveController = controllers[0]; //this directive's controller
var ngModelController = controllers[1];
}
};
});