我试图了解应用程序中Ember运行循环的实际用法。
所以这就是我所观察到的
Ember有2路绑定..所以如果我更新我的JS代码中的任何属性值,相应的更改应该自动反映在UI上。
但在某些情况下,我们必须做类似
的事情Ember.run.next
Ember.run.scheduleOnce
等
我想了解我们需要在哪些情况下添加Ember.run。*&在哪些情况下,值不会在UI上自动重新呈现?
答案 0 :(得分:1)
<强> Ember.run 强>
如果您的代码使用了一些非余烬对象,则大多数时候您都会使用Ember运行循环。例如,如果你将jQuery与Ember结合起来。 docs:
中的一个示例$('a').click(() => {
Ember.run(() => { // begin loop
// do something with Ember objects here
}); // end loop, jobs are flushed and executed
});
您这样做是为了确保在您拥有代码之前运行所有计算属性,观察者和其他内部Ember内容;因此,在上面的示例中,您可以确保点击处理程序与应用的其余部分同步。
如果您未在此处手动定义Ember,则Ember将尝试为您开始和结束近似值。但我得说,现在有了几年Ember的经验,大多数时候它不起作用(或不能正常工作)。所以,自己定义一下吧!
其他方法,如debounce,throttle,schedule和scheduleOnce
所有其他方法实际上只是辅助方法。与其他库(例如Lodash还有_.debounce
和_.throttle
函数)的区别在于这些方法也与Ember Run循环链接。
如果你要使用其他库,你最终会在函数中包装Ember.run方法。使用例如Ember.debounce
,您不必担心这些事情。
有关详细信息,请阅读here!