我正在尝试在我的应用中创建一个指令。但是,我需要在不同的地方使用指令,并且它们有自己的控制器。
所以在我的指令中
directive('test', [function($popover) {
return {
restrict: 'E',
scope: false,
link: function(scope, elem, attrs) {
}
};
}
])
如何将两个控制器添加到一个指令?
谢谢!
答案 0 :(得分:1)
您可以使用name
和controller="@"
选项。
.directive('test', [function($popover) {
return {
restrict: 'E',
scope: false,
controller : "@",
name:"controller",
template:'<div>{{value}}</div>',
link: function(scope, elem, attrs) {
}
};
}
例如: -
<test controller="ctrl1"></test>
.....
<test controller="ctrl2"></test>
当您指定controller= '@'
angular时,将查找已注册的控制器,其中包含为name
选项中提到的元素属性(您可以为该属性指定任何名称)指定的属性值
<强> Plnkr 强>
以下是角度指令实现的片段: -
if (controllerDirectives) {
....
controller = directive.controller;
if (controller == '@') {
controller = attrs[directive.name];
}
controllerInstance = $controller(controller, locals);