两个嵌套指令之间的通信angularjs

时间:2013-08-14 12:41:17

标签: angularjs angularjs-directive angularjs-scope

我想使用此HTML创建一个transclude指令:

%h2 Widgets :
.row-fluid{ "ng-controller" => "ApplicationDashboardCtrl" }
  .span6
    %widget{ type: "chart", "ng-model" => "widget", "ng-repeat" => "widget in widgets","ng-transclude" => "" }
      .chart.bottom20
        {{ widget.title }}

      %data-source{ src: "/public/test.json"}
      %lines{ y: "value", x: "label" }

  .span6

问题是,我的两个指令不共享同一个范围实例。我创建了一个代表我的问题的plinkr:

My issue using Plnkr

我不明白为什么我的两个指令不共享相同的范围以及为什么我的“widget”指令没有捕获事件“setupExtra”。我知道,我可以使用$ rootScope,但我想没有它。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我找到了我的解决方案,我必须使用$ emit而不是$ broadcast

  • $ broadcast - 将事件向下调度到所有子范围,
  • $ emit - 通过范围层次结构向上调度事件。

对不起,我保留给其他初学者:)