【问题标题】:AngularJS: Passing data from a transclude directive to the isolated scope of a sub-directiveAngularJS:将数据从 transclude 指令传递到子指令的隔离范围
【发布时间】:2014-12-15 15:42:06
【问题描述】:

基于这个 Plunker:http://plnkr.co/edit/GufJjrn3OxYVSf2oLD5n?p=preview

我有两个指令,为了简单起见,我们将它们命名为directiveBluedirectiveRed

directiveRed 必须是directiveBlue 的子元素。

我们小应用的MainCtrl在变量$scope.elements下有一个简单的数组。

此变量通过data-elements 属性传递给directiveBlue 创建的隔离范围。请注意,directiveBlue 必须是一个 transclude 指令。

然后我的主要问题是,我如何将元素数组传递给 directiveRed 而不必通过 $scope.$parent.elements 来完成它,这在我看来是一种不好的做法,然后它使代码紧密耦合.

对 deepest 指令中元素的任何更改都应与其余范围同步。

对此有什么好的做法或有效的解决方案吗?

谢谢!

编辑:

更具体地说明我的用例:

我创建了一个具有更具体情况的 plunker (http://plnkr.co/edit/i2Busz6E8ehlkG3uEllh?p=preview),我想为一个操作组指定指令,我已经将一个选项实现为一个简单的指令,我想将我的逻辑放在指令控制器。 selectAll 方法非常简单,但我可以想象有更复杂的操作,这需要顶级范围的元素。

【问题讨论】:

    标签: javascript angularjs angularjs-directive


    【解决方案1】:

    有很多解决方案,但在不知道您的目标是什么的情况下,或多或少是在猜测。 以下引用来自$compile 的角度文档,并描述了controller 的使用

    (...)控制器在预链接阶段之前被实例化,并与其他指令共享(参见 require 属性)。这允许指令相互通信并增强彼此的行为。控制器是可注入的(...)

    您的plnkr 的一个分支,以显示如何在directiveBluedirectiveRed 中访问MainCtrl$scope.elements

    【讨论】:

    • 感谢您的回复。我创建了一个具有更具体情况的 plunker (plnkr.co/edit/i2Busz6E8ehlkG3uEllh?p=preview),我想为一个操作组指定指令,我已经将一个选项实现为一个简单的指令,并且我想将我的逻辑放在指令控制器中。 selectAll 方法非常简单,但我可以想象有更复杂的操作,这需要顶级范围的元素。
    猜你喜欢
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多