如何在指令AngularJS之间传递对象?

时间:2013-09-05 05:18:53

标签: javascript angularjs angularjs-directive angularjs-scope

如果我在指令A的链接函数中定义/实例化对象foo。从单独指令的链接函数访问同一对象的方法是什么?

2 个答案:

答案 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"
    }
})

Working example

答案 1 :(得分:0)

我没有足够的声誉来评论,所以我会在这里添加。

针对同一问题挣扎的人的一些额外信息。这取决于指令相对于彼此的使用位置。

  

^前缀表示此指令在其上搜索控制器   它的父母(没有^前缀,指令会寻找   控制器就在它自己的元素上。)