AngularJS:将数据从transclude指令传递到子指令的隔离范围

时间:2014-12-15 15:42:07

标签: javascript angularjs angularjs-directive

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

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

directiveRed必须是directiveBlue的子元素。

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

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

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

然后,对最深层指令中元素的任何更改都应与其他范围同步。

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

谢谢!

修改

更具体地说明我的用例:

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

1 个答案:

答案 0 :(得分:0)

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

的使用
  

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

plnkr的一个分支,以显示如何在MainCtrl$scope.elements

中访问directiveBlue的{​​{1}}