Angular 让一个 directive 等另一个或者多个 directive 执行完后再执行

2016-06-24 09:13:33 +08:00
 walkie

标题略显凌乱 具体我想做的是, 有一个 directive 用在网页不同的部分里处理个体数据,然后最后想要把这些数据集中统一处理(已经写了一个 service 做 directive 数据交流),就是最后统一处理这部分不知道如何做?要如何等待这些 diective 处理完成呢, 强行用$timeout 这种做法似乎太脏了。求指点 谢谢

3182 次点击
所在节点    Angular
13 条回复
cloverstd
2016-06-24 09:14:43 +08:00
用 $rootScope.$broadcast ?
walkie
2016-06-24 09:32:08 +08:00
@cloverstd 假设每个 directive 都广播 那$rootScope.$on 会 catch 多次 还是没办法知道是否所有的 direcitves 都处理完毕了啊
cloverstd
2016-06-24 09:37:41 +08:00
@walkie directive 如果确定的话,在 $rootScope 上挂个计数器,当计数器为 0 时 $broadcast
gucheen
2016-06-24 09:40:37 +08:00
directive 可以 output 啊,你只需要在 controller 里添加对应的回调事件,回调事件中判断是否所有的 directive 都已经执行完毕(可以添加标记),然后再添加最后那个 directive
learnshare
2016-06-24 10:07:58 +08:00
promise 交给 service 来做, directive 是用来显示内容、处理 DOM 和用户操作的。
chairuosen
2016-06-24 10:12:56 +08:00
没看懂要干嘛,最好给 jsFiddle Demo
leer561
2016-06-24 10:15:26 +08:00
我不明白,为什么你的 directive 在处理数据
murmur
2016-06-24 10:32:37 +08:00
这不好 用了双向绑定不就是解决这种回调地狱么
otakustay
2016-06-24 10:55:47 +08:00
没看明白……但直觉上不应该会出现 directive 等 directive 这种事,只会出现 directive 等某个数据出现这事……
sfree2005
2016-06-24 11:04:20 +08:00
我怎么感觉处理数据这些事情应该给后端做? 没有 code 还是不能判断 但处理数据什么的至少也可以丢给 factory 去做吧
walkie
2016-06-24 11:57:41 +08:00
我有点误导了 可以不是 directive , 可以是 service
举个🌰
所有 directive 都要报个数给一个 例如说叫 counter 的 service 吧 你怎么知道什么时候这个数报完?前提是你不知道一共有多少 directive
shiye515
2016-06-24 12:58:45 +08:00
定义 directive 的时候有个 priority 属性,可以定义 directive 执行的优先级,不知道能不能解决你的问题
walkie
2016-06-24 13:09:28 +08:00
@shiye515 谢谢 不过那个是定义 同 element 的多个 directive 的优先级,这个是整个 page 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/287954

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX