8

类似于文档准备好的东西,但毕竟 Ember 视图呈现

我现在正在通过覆盖 ApplicationView didInsertElement 来执行此操作,到目前为止它似乎正在工作:

App.ApplicationView = Em.View.extend({
  didInsertElement: function() {
    // Do your magic.
  }
});

我想知道这是否是准备 Ember 文档的正确方法,或者 Ember 是否对这个简单且非常常见的东西有更原生的支持。

4

3 回答 3

10

您可以通过重新打开基 View 类并将其添加到渲染队列中轻松添加“渲染后”挂钩。

这里有一些代码向您展示如何:

Ember.View.reopen({
    didInsertElement : function() {
        this._super();
        Ember.run.scheduleOnce('afterRender', this, this.didRenderElement);
    },
    didRenderElement : function() {
        // Override this in your View's
    }
});
于 2013-08-06T05:18:05.277 回答
5

didInsertElement是正确的地方,但如果您想完全确定您的渲染队列已完全刷新,您还可以监听afterRender事件,如下所示:

App.ApplicationView = Ember.View.extend({
  didInsertElement: function() {
    Ember.run.scheduleOnce('afterRender', this, 'processChildElements');
  },

  processChildElements: function() {
    // do here what you want with the DOM
  }
});

希望能帮助到你。

于 2013-08-04T22:57:55.913 回答
0
App.ApplicationView = Ember.View.extend({
  afterRender: function () {
    Ember.run.next(this, function () {
      // This will run one time, after the full initial render.
    });
  }
});
于 2015-05-28T23:36:02.100 回答