V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
walkie
V2EX  ›  Angular

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

  •  
  •   walkie · 2016-06-24 09:13:33 +08:00 · 3153 次点击
    这是一个创建于 2834 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2016-06-24 13:09:28 +08:00
    cloverstd
        1
    cloverstd  
       2016-06-24 09:14:43 +08:00
    用 $rootScope.$broadcast ?
    walkie
        2
    walkie  
    OP
       2016-06-24 09:32:08 +08:00
    @cloverstd 假设每个 directive 都广播 那$rootScope.$on 会 catch 多次 还是没办法知道是否所有的 direcitves 都处理完毕了啊
    cloverstd
        3
    cloverstd  
       2016-06-24 09:37:41 +08:00
    @walkie directive 如果确定的话,在 $rootScope 上挂个计数器,当计数器为 0 时 $broadcast
    gucheen
        4
    gucheen  
       2016-06-24 09:40:37 +08:00
    directive 可以 output 啊,你只需要在 controller 里添加对应的回调事件,回调事件中判断是否所有的 directive 都已经执行完毕(可以添加标记),然后再添加最后那个 directive
    learnshare
        5
    learnshare  
       2016-06-24 10:07:58 +08:00
    promise 交给 service 来做, directive 是用来显示内容、处理 DOM 和用户操作的。
    chairuosen
        6
    chairuosen  
       2016-06-24 10:12:56 +08:00
    没看懂要干嘛,最好给 jsFiddle Demo
    leer561
        7
    leer561  
       2016-06-24 10:15:26 +08:00
    我不明白,为什么你的 directive 在处理数据
    murmur
        8
    murmur  
       2016-06-24 10:32:37 +08:00
    这不好 用了双向绑定不就是解决这种回调地狱么
    otakustay
        9
    otakustay  
       2016-06-24 10:55:47 +08:00
    没看明白……但直觉上不应该会出现 directive 等 directive 这种事,只会出现 directive 等某个数据出现这事……
    sfree2005
        10
    sfree2005  
       2016-06-24 11:04:20 +08:00 via iPhone
    我怎么感觉处理数据这些事情应该给后端做? 没有 code 还是不能判断 但处理数据什么的至少也可以丢给 factory 去做吧
    walkie
        11
    walkie  
    OP
       2016-06-24 11:57:41 +08:00
    我有点误导了 可以不是 directive , 可以是 service
    举个🌰
    所有 directive 都要报个数给一个 例如说叫 counter 的 service 吧 你怎么知道什么时候这个数报完?前提是你不知道一共有多少 directive
    shiye515
        12
    shiye515  
       2016-06-24 12:58:45 +08:00 via Android
    定义 directive 的时候有个 priority 属性,可以定义 directive 执行的优先级,不知道能不能解决你的问题
    walkie
        13
    walkie  
    OP
       2016-06-24 13:09:28 +08:00
    @shiye515 谢谢 不过那个是定义 同 element 的多个 directive 的优先级,这个是整个 page 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4042 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:18 · PVG 18:18 · LAX 03:18 · JFK 06:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.