摘要在子指令之前更新父控制器

时间:2013-12-08 01:51:25

标签: angularjs

我有一个控制器和一个指令。该指令使用名为=的{​​{1}}双向var和名为counter的{​​{1}}表达式隔离范围。

该指令将更新&并立即致电tick()

问题在于这些操作发生的顺序:

  1. counter已在指令
  2. 中更新
  3. tick()在控制器上调用
  4. 控制器中已更新
  5. counter

    我设法使用tick()解决了他的问题,但这有点像黑客。
    另一种解决方案是让counter接受一个参数(setTimeout(tick,0);的值)。

    有没有比我上面描述的更好的解决方案?

1 个答案:

答案 0 :(得分:2)

Zen of Angular建议:

Treat scope as read only in templates
Treat scope as write only in controllers

避免读取控制器中的值counter。相反,将其作为模板中的参数传递。

setTimeout技巧是一个黑客,应该避免依赖$digest循环中各种观察者的执行顺序。