【问题标题】:Use of Ember run loopEmber 运行循环的使用
【发布时间】:2018-03-01 17:24:43
【问题描述】:

我正在尝试了解 Ember 运行循环在应用中的实际使用情况。

这就是我观察到的情况

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

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

Ember.run.next 
Ember.run.scheduleOnce

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

【问题讨论】:

    标签: javascript jquery ember.js


    【解决方案1】:

    Ember.run

    如果您的代码使用一些非 ember 对象,则大多数时候您会使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 2015-10-06
      • 2014-06-06
      相关资源
      最近更新 更多