If I define/instantiate an object foo
inside the link function of directive A. What's a way to access the same object from the link function of a separate directive?
问问题
1482 次
2 回答
2
从文档中引用:
控制器在预链接阶段之前被实例化,并与其他指令共享(参见 require 属性)。这允许指令相互通信并增强彼此的行为。
这意味着要在同一对象或其子对象上的两个指令之间共享数据,您需要在指令 A 控制器中公开 foo,并require
在指令 B 中注入选项。
指令如下所示:
.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"
}
})
工作示例。
于 2013-09-05T07:01:58.683 回答
0
我没有足够的声誉来发表评论,所以我会在这里添加它。
对于遇到相同问题的人的一些附加信息。这取决于指令相互关联的使用位置。
^ 前缀表示该指令在其父元素上搜索控制器(没有 ^ 前缀,该指令将仅在其自己的元素上查找控制器)。
于 2014-06-01T13:02:33.163 回答