渲染模板时Ember中的全局钩子

时间:2015-01-12 10:01:00

标签: ember.js

渲染模板时是否可以在Ember中捕获全局事件?

这样我就可以在每个模板的基础上调用初始化脚本,如上所述。这不是初始化者的候选者 - 我试图在我的应用程序中的大约30%的页面上初始化一些jQuery插件,所以这样做一次而不是重复我自己会很棒。

无法使用全局钩子,钩住正在呈现的模板的最合适位置是什么?我只使用模板,所以我无法将didInsertElement捕获到视图上。

1 个答案:

答案 0 :(得分:1)

我不知道这是不是正确的方法,但我试了一下,因为你的问题让我感兴趣。以下似乎有效:http://emberjs.jsbin.com/pujiqipafe/1/edit?html,js,output

基本上我使用路由挂钩renderTemplate并添加:

Ember.run.scheduleOnce('afterRender', myfunction);

调用this.render()

你可以通过制作

来扩展它
App.MyJqueryRoute = Ember.Route.Extend({
  renderTemplate: function(){
    this.render();
    var myjquery = function(){
      //do your jQuery stuff here
    };
    Ember.run.scheduleOnce('afterRender', myjquery);
  }
});

然后只需在您需要此功能的路线中展开App.MyJqueryRoute而不是Ember.Route.Extend

(这是我在阅读你的帖子时提出的建议,我不是一个烬专家,所以我很乐意听到任何其他解决方案或改进我的社区解决方案)