如果我在指令A的链接函数中定义/实例化对象foo
。从单独指令的链接函数访问同一对象的方法是什么?
答案 0 :(得分:2)
引自documenation:
控制器在预链接阶段之前被实例化,并且它是 与其他指令共享(请参阅require属性)。这允许 指令相互通信并相互增强 行为。
这意味着要在同一个对象或它的子节点上的两个指令之间共享数据,您需要在指令A控制器中公开foo,在指令B中注入require
选项。
指令看起来像这样:
.directive("dirA", function () {
return {
controller: function ($scope, $element, $attrs) {
},
link: function ($scope, $element, $attrs, controller) {
controller.foo = $attrs.dirA;
}
}
})
.directive("dirB", function () {
return {
link: function ($scope, $el, $attr, controller) {
$scope.shared = controller.foo;
},
require: "dirA"
}
})
答案 1 :(得分:0)
我没有足够的声誉来评论,所以我会在这里添加。
针对同一问题挣扎的人的一些额外信息。这取决于指令相对于彼此的使用位置。
^前缀表示此指令在其上搜索控制器 它的父母(没有^前缀,指令会寻找 控制器就在它自己的元素上。)