【发布时间】:2015-01-12 10:01:00
【问题描述】:
渲染模板时是否可以在 Ember 中捕获全局事件?
这样我就可以按照描述在每个模板的基础上调用初始化脚本。这不是初始化程序的候选者 - 我正在尝试在我的应用程序中大约 30% 的页面上初始化一些 jQuery 插件,所以这样做一次而不重复自己会很棒。
全局挂钩失败,挂钩正在呈现的模板的最合适位置是什么?我只使用模板,所以我不能在视图上捕获didInsertElement。
【问题讨论】:
标签: ember.js
渲染模板时是否可以在 Ember 中捕获全局事件?
这样我就可以按照描述在每个模板的基础上调用初始化脚本。这不是初始化程序的候选者 - 我正在尝试在我的应用程序中大约 30% 的页面上初始化一些 jQuery 插件,所以这样做一次而不重复自己会很棒。
全局挂钩失败,挂钩正在呈现的模板的最合适位置是什么?我只使用模板,所以我不能在视图上捕获didInsertElement。
【问题讨论】:
标签: ember.js
我不知道这是否是正确的方法,但我试了一下,因为你的问题让我很感兴趣。以下似乎有效: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。
(这是我在阅读您的帖子时提出的建议想法,我不是 ember 专家,所以我很乐意从社区听到任何其他解决方案或对我的解决方案的改进)
【讨论】: