0

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

两者都有自己的用户界面,因此我使用了限制:“E”

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

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

scope: {
    onNotify : "&"
}

由于范围不同,因此变得混乱。

我能想到的最好的方法是“消息总线”模式。我介绍了第三个(基于属性的)指令,它公开了一个“api”

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

jsfiddle在这里:http: //jsfiddle.net/concept/dELCv/

我的问题是:

  1. 这实际上是让两个基于元素的指令进行通信的唯一方法吗?
  2. 范围感觉不对,因为我不得不使用 $(document).data("fc-bus.api", api) 在控制器之间共享 api 实例。有人可以建议在控制器之间共享 API 的更好方法吗

它可以工作,我想这很好,但是对于全局范围的 api,它真的感觉不是很“棱角分明”

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

4

1 回答 1

1

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

于 2014-02-19T18:09:02.633 回答