在两个单独的指令之间进行通信

时间:2013-09-20 14:06:48

标签: angularjs angularjs-directive

让两个指令互相交流的最佳方法是什么?可以说我有以下设置:

<drop-uploader></drop-uploader>
<drop-uploader></drop-uploader>

<progress-bar></progress-bar>

了解&#34;上传者的最佳方式&#34;指令通知&#34;进度条&#34;指示?是在rootScope上使用事件或使用服务的最佳方法吗?有没有办法将指令作为另一个指令的属性来访问其范围?像这样......

<drop-uploader progress-bar="thisone"></drop-uploader>
<drop-uploader progress-bar="thisone"></drop-uploader>

<progress-bar name="thisone"></progress-bar>

2 个答案:

答案 0 :(得分:1)

在控制器之间共享数据的选项(在文档中检查“require”)但据我所知,你不能使用该方法在兄弟姐妹之间共享数据。它必须是父母/孩子(如果我错了,有人会纠正我。)

但您可以使用服务共享数据。无论有多少不同的控制器/服务/指令调用它,每个服务只有一个实例,因此将数据设置为一个将更新另一个。

此处列出的溶剂适用于指令和控制器:Angularjs, passing scope between routes

答案 1 :(得分:1)

我会使用$ rootScope $broadcast来寻找事件,因为所有其他机制都会将状态引入系统,您需要保持同步状态。

使用rootscope上的属性或创建具有共享变量的服务。

此外,如果场景符合事件模式,那么$broadcast会更好。