使用Ember运行循环

时间:2018-03-01 17:24:43

标签: javascript jquery ember.js

我试图了解应用程序中Ember运行循环的实际用法。

所以这就是我所观察到的

Ember有2路绑定..所以如果我更新我的JS代码中的任何属性值,相应的更改应该自动反映在UI上。

但在某些情况下,我们必须做类似

的事情
Ember.run.next 
Ember.run.scheduleOnce

我想了解我们需要在哪些情况下添加Ember.run。*&在哪些情况下,值不会在UI上自动重新呈现?

1 个答案:

答案 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