2

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

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

<progress-bar></progress-bar>

让“上传者”指令通知“进度条”指令的最佳方式是什么?在 rootScope 上使用事件或使用服务的最佳方式是什么?有没有办法引用一个指令作为另一个指令的属性来访问它的范围?像这样的东西...

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

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

2 回答 2

1

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

无论是使用属性rootscope还是创建具有共享变量的服务。

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

于 2013-09-20T14:42:48.457 回答
1

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

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

此处概述的解决方案适用于指令和控制器:Angularjs,在路由之间传递范围

于 2013-09-20T14:39:31.023 回答