walkie
V2EX  ›  Angular

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

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