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

How to pass object between directives AngularJS?

本文关键字:对象 之间 指令 AngularJS      更新时间:2023-09-26

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

文档引用:

控制器在预链接阶段之前被实例化与其他指令共享(请参见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"
    }
})

工作示例。

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

一些额外的信息,为某人与同样的问题斗争。这取决于指令的使用位置。

^前缀表示此指令在上搜索控制器它的父级(如果没有^前缀,该指令将查找仅在其自身元件上的控制器)。