每次渲染或渲染时触发jquery事件

cof*_*uts 3 javascript jquery triggers bind ember.js

我需要在每个ember.js视图渲染后运行一个函数.我最初的想法是在页面准备好后运行我的函数,但任何视图更改都不受我的函数中DOM操作的影响.有没有一种方法可以在每次渲染视图或重新渲染视图时绑定到事件(或导致触发器)?

int*_*xel 5

您可以挂钩didInsertElement并执行所有DOM操作:

例如:

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

  processChildElements: function() {
    // do here any DOM manipulatins
  }
});
Run Code Online (Sandbox Code Playgroud)

根据您的上次评论进行修改

如果你不想挂接到didInsertElement在每个视图基础上,你可以随时深入挖掘框架和reopenEmber.View阶级,勾入render函数,然后调用后this._super(buffer);,这样的观点可以做的工作,甚至拦截renderBuffer你放置您的自定义代码:

Ember.View.reopen({
  render: function(buffer) {
    this._super(buffer);
    // do funny stuff ...
    console.log(this.get('elementId'));
  }
});
Run Code Online (Sandbox Code Playgroud)

请参阅此处以获取示例(检查控制台).

希望能帮助到你.