Eug*_*ene 7 angularjs angularjs-directive
我有一个由另一个开发人员编写的指令,基本上有以下配置:
{
controller: MyController,
controllerAs: 'myController',
link: function(scope, $element, attrs, ctrl) {
// Does some setup that requires controller
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,控制器作为第四个参数传递,指令工作.
现在我决定使指令更灵活,可重用和更好.所以,我添加了指令配置
require: '?ngModel'
Run Code Online (Sandbox Code Playgroud)
突然,现在我的控制器永远不会传递给链接功能.第四个参数没有数组,没有第五个参数,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];
}
};
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2982 次 |
| 最近记录: |