控制器如何与AngularJS中的指令通信?

时间:2013-08-16 22:07:24

标签: angularjs angularjs-directive angularjs-scope

  • 我有一个显示4张闪存卡的应用程序,其中3张由一个指令填充
  • 最后一张卡,我希望值依赖于控制器
  • 根据视图(及相应的控制器),控制器可以填写第4张卡的值。

  • 出于演示目的,请参阅here

问题
- 如何从某个控制器更新第4张卡中的值?
- 将值从某个控制器推送到指令是否是一个好主意?
- 什么是最好的解决方案?

我是Angular新手并且正在探索它

2 个答案:

答案 0 :(得分:7)

对于你的问题,我认为你需要这样的东西:http://plnkr.co/edit/gp0zIwnj9Oz3IpQPXhDI?p=preview
我在你的指令范围内添加了数据,这些数据是从控制器传递的

scope: {
  ngModel: '=',
  somedata:'@'
},

HTML:

<data-ng-pt-header somedata='{{somedata}}'></data-ng-pt-header>

在控制器中:

$scope.somedata='This comes from the controller';

当然还有模板:

        <div class="well info-card days-left">
        <legend>Spent</legend>
        <span>{{somedata}}</span>
    </div>

这是将数据传递给指令的众多方法之一,最简单的方法是,如果您想要更多关于指令的信息,还有这篇优秀文章:http://amitgharat.wordpress.com/2013/06/08/the-hitchhikers-guide-to-the-directive/

对于另外两个问题,是的,将数据发送到控制器的指令可能是一个好主意,它很大程度上依赖于您想要的数据和逻辑,但您的应用似乎需要它。 /> 最好的解决方案不存在(至少不会只看到一个简单的例子),但由于它似乎是一个简单的数据交换,最简单的方法似乎符合您的要求;)

玩得开心

答案 1 :(得分:1)

指令中的控制器控制指令的范围。如果要从其他控制器传递数据,则必须通过指令中的控制器从其他控制器传递。

stackoverflow中有几个线程涉及如何在控制器之间传递数据。

希望这有帮助。