Javascript 如何将控制器添加到指令?
我正在尝试在我的应用程序中创建一个指令。然而,我需要在不同的地方使用指令,它们有自己的控制器 所以在我的指令中Javascript 如何将控制器添加到指令?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在尝试在我的应用程序中创建一个指令。然而,我需要在不同的地方使用指令,它们有自己的控制器 所以在我的指令中 directive('test', [function($popover) { return { restrict: 'E', scope: false, link: function(scope, elem, attrs) { } }; } ])
directive('test', [function($popover) {
return {
restrict: 'E',
scope: false,
link: function(scope, elem, attrs) {
}
};
}
])
如何将两个控制器添加到一个指令
谢谢 您可以使用
name
和controller=“@”
选项
.directive('test', [function($popover) {
return {
restrict: 'E',
scope: false,
controller : "@",
name:"controller",
template:'<div>{{value}}</div>',
link: function(scope, elem, attrs) {
}
};
}
我认为你不能注入两个控制器,你应该考虑另一种方法,你不必注入控制器。可以使用指定为属性的控制器。这就是你想要的吗?嗯。。。在我的字典里找不到。你是怎么发现的?这有点让人困惑,在独立作用域绑定中使用与绑定相同的“@”如何?显然未记录的
name
属性用于指定控制器属性名称,因此您可以使用name:“ctrl”
,它将使用crtl
属性而不是controller
,但是您仍然需要控制器:“@”,
…很久以前,我在查看angular指令实现时发现了它,然后我尝试了一下,但没有记录下来,我不知道为什么。可以为属性使用任何名称,在该属性中可以指定控制器。它查找@
作为控制器名称。它与隔离作用域的@
无关。它们是两个不同的实现。@JasonGoemaat请参阅angular代码段中部分的更新答案。
<test controller="ctrl1"></test>
.....
<test controller="ctrl2"></test>
if (controllerDirectives) {
....
controller = directive.controller;
if (controller == '@') {
controller = attrs[directive.name];
}
controllerInstance = $controller(controller, locals);