Angularjs:基于元素的指令通信

时间:2013-03-12 16:45:15

标签: angularjs-directive

我需要有两个基于元素的指令。

两者都有自己的UI因此我使用了限制:“E”

我需要一种方法将数据从一个/多个指令传递到另一个

发送数据的两个指令位于两个不同的控制器中(一个在页头中,一个在页面主体中)因此尝试使用

scope: {
    onNotify : "&"
}
由于范围不同,

变得混乱。

我能想到的最好的是“消息总线”模式。我在哪里引入了第3个(基于属性)指令,暴露了“api”

api = {
  addListener : function(event, fn),
  publish : function(event, data)
}

jsfiddle here:http://jsfiddle.net/concept/dELCv/

我的问题是这些:

  1. 这实际上是获得两个基于元素的指令进行交流的唯一方法吗?
  2. 范围感觉不对,因为我不得不使用$(document).data(“fc-bus.api”,api)来共享控制器之间的api实例。有人可以建议在控制器之间共享API的更好方法
  3. 它有效,我猜它很好,但它真的不会感觉非常“角”与全球范围的api

    我期待您的所有答案和评论

1 个答案:

答案 0 :(得分:1)

代替第3个指令,创建一个服务来共享数据,并$watch更改每个指令内服务数据的变化。