我可以在模型更新时阻止/延迟AngularJS $摘要的发生

时间:2014-01-15 15:32:20

标签: angularjs model digest

有没有办法推迟或推迟摘要的发生?

我想对模型进行一系列更改但我不希望在对模型进行所有更改之前触发摘要。模型上的一些对象具有观察者,可以更新模型上的其他对象以进行更改。

理想情况下我想

  • 停止$ digest
  • 对模型进行所有更改
  • 启动$ digest

$ digest将找到所有脏对象并解雇观察者。

另一个解决方案是,而不是停止$ digest我可以

  • 删除观察者
  • 对模型进行所有更改(摘要仍然运行)
  • 添加已删除的观察者

添加观察者后,我需要运行观察者方法以确保模型处于正确的状态。

我觉得第二个选项看起来像是一个黑客。

想法?

1 个答案:

答案 0 :(得分:13)

这根本不是黑客攻击。这是一个很好的问题,因为当用户快速输入文本或压缩退格时,大数据集会导致$ digest周期运行得非常慢。您绝对可以performance tweaks谨慎使用$watch$filter函数,但有时最好使用debounce function延迟$digest周期。