标题略显凌乱 具体我想做的是, 有一个 directive 用在网页不同的部分里处理个体数据,然后最后想要把这些数据集中统一处理(已经写了一个 service 做 directive 数据交流),就是最后统一处理这部分不知道如何做?要如何等待这些 diective 处理完成呢, 强行用$timeout 这种做法似乎太脏了。求指点 谢谢
1
cloverstd 2016-06-24 09:14:43 +08:00
用 $rootScope.$broadcast ?
|
2
walkie OP @cloverstd 假设每个 directive 都广播 那$rootScope.$on 会 catch 多次 还是没办法知道是否所有的 direcitves 都处理完毕了啊
|
3
cloverstd 2016-06-24 09:37:41 +08:00
@walkie directive 如果确定的话,在 $rootScope 上挂个计数器,当计数器为 0 时 $broadcast
|
4
gucheen 2016-06-24 09:40:37 +08:00
directive 可以 output 啊,你只需要在 controller 里添加对应的回调事件,回调事件中判断是否所有的 directive 都已经执行完毕(可以添加标记),然后再添加最后那个 directive
|
5
learnshare 2016-06-24 10:07:58 +08:00
promise 交给 service 来做, directive 是用来显示内容、处理 DOM 和用户操作的。
|
6
chairuosen 2016-06-24 10:12:56 +08:00
没看懂要干嘛,最好给 jsFiddle Demo
|
7
leer561 2016-06-24 10:15:26 +08:00
我不明白,为什么你的 directive 在处理数据
|
8
murmur 2016-06-24 10:32:37 +08:00
这不好 用了双向绑定不就是解决这种回调地狱么
|
9
otakustay 2016-06-24 10:55:47 +08:00
没看明白……但直觉上不应该会出现 directive 等 directive 这种事,只会出现 directive 等某个数据出现这事……
|
10
sfree2005 2016-06-24 11:04:20 +08:00 via iPhone
我怎么感觉处理数据这些事情应该给后端做? 没有 code 还是不能判断 但处理数据什么的至少也可以丢给 factory 去做吧
|
11
walkie OP 我有点误导了 可以不是 directive , 可以是 service
举个🌰 所有 directive 都要报个数给一个 例如说叫 counter 的 service 吧 你怎么知道什么时候这个数报完?前提是你不知道一共有多少 directive |
12
shiye515 2016-06-24 12:58:45 +08:00 via Android
定义 directive 的时候有个 priority 属性,可以定义 directive 执行的优先级,不知道能不能解决你的问题
|