walkie
V2EX  ›  Angular

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

  •  
  •   walkie · Jun 24, 2016 · 4115 views
    This topic created in 3611 days ago, the information mentioned may be changed or developed.

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

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