当Ember.js完成加载所有内容时,有没有办法获得回调?

jed*_*ede 7 ember.js

我正在构建一个Ember.js应用程序,我需要在渲染/加载所有内容后进行一些额外的设置.

有没有办法得到这样的回调?谢谢!

Kev*_*hey 10

View上还定义了几个可以重载的函数,这些函数将被自动调用.这些措施包括willInsertElement(),didInsertElement(),afterRender(),等.

特别是我找到didInsertElement()一个有用的时间来运行在常规面向对象系统中的代码将在构造函数中运行.


Laz*_*Boy 6

你可以使用的ready属性Ember.Application.

来自http://awardwinningfjords.com/2011/12/27/emberjs-collections.html的示例:

// Setup a global namespace for our code.
Twitter = Em.Application.create({

  // When everything is loaded.
  ready: function() {

    // Start polling Twitter
    setInterval(function() {
      Twitter.searchResults.refresh();
    }, 2000);

    // The default search is empty, let's find some cats.
    Twitter.searchResults.set("query", "cats");

    // Call the superclass's `ready` method.
    this._super();
  }
});
Run Code Online (Sandbox Code Playgroud)


jda*_*dar 5

LazyBoy的答案是你想要做的,但它的工作方式与你想象的不同.你的问题的措辞突出了关于恩伯的一个有趣的观点.

在您的问题中,您指定在呈现视图需要回调.但是,对于良好的'Ember'样式,您应该使用在初始化应用程序之后但呈现视图之前触发的'ready'回调.

重要的概念点是,在回调更新数据模型之后,您应该让Ember更新视图.

让ember更新视图大多是直截了当的.有一些边缘情况需要使用'didFoo'回调来避免视图中的状态转换闪烁.(例如,避免显示"未找到任何项目"0.2秒.)

如果这对你不起作用,你也可以调查'onLoad'回调.