如何添加事件处理程序来路由Ember.js中显示的事件
How to add event handler to route displayed event in Ember.js?
我在Ember.js中有一个简单的站点,它有:
App.Router.map(function() {
this.resource('main', { path: '/main' });
this.route('sub', { path: '/sub' });
模板如下:
<script type="text/x-handlebars" data-template-name="main/sub">
<a href='image.jpg' class='fancyBox'><img src='image.jpg'></a>
</script>
现在,为了制作FancyBox,当我点击图像时,它会在新的层中打开,我通常调用函数:
$("a.fancyBox").fancybox();
现在我需要在显示main/sub时调用它。这必须在显示模板主/子之后完成。
那么,如何将事件绑定到正在显示的模板以调用fancybox呢?
一种可能的方法是创建一个MainSubView
并挂接到didInsertElement
函数:
App.MainSubView = Ember.View.extend({
didInsertElement: function() {
$("a.fancyBox").fancybox();
}
});
将视图插入DOM时,将调用didInsertElement
函数。
另外值得一提的是,如果在视图从DOM中删除后,对fancybox()
的调用需要进行一些清理,那么可以在didInsertElement
的对应钩子willDestroyElement
中进行清理。
示例:
App.MainSubView = Ember.View.extend({
didInsertElement: function() {
$("a.fancyBox").fancybox();
},
willDestroyElement: function() {
// remove here the displayed fancybox
}
});
希望能有所帮助。
相关文章:
- 强制模板刷新ember.js
- Ember.js-接口状态应该存储在哪里
- Uncaught TypeError:undefined不是函数-ember js
- 手动触发ember.js中的属性更改
- Ember.js Ember.View didRender event
- Ember.js Ember数据呈现双嵌套hasMany关系
- 限制对 Ember.js (Ember.Router) 中特定路由的访问
- Ember.js - Ember.js 车把内的视图有条件:视图未显示
- Node.js+Ember.js登录系统
- 在Ember.js Ember数据记录数组上迭代
- 在Ember JS+Ember Data中使用字符串而不是ID的URL
- ember.js ember.使用多个选项选择值绑定
- Ember.JS: Ember-Objects和它们被导出到的位置
- 当测试Ember.js (ember-cli) App时,在teardown中获取“App is not defined
- ember.js/ember-data期望从post请求得到什么样的响应?
- 如何检查模型是否已更改但尚未保存到服务器?(Ember.js / Ember-data)
- Ember.js/Ember-Data:使用RESTAdapter从多个端点加载数据
- Ember.js ember-plupload drag&drop
- Ember.js ember-data and cross-domain ajax requests
- Ember.js / Ember-i18n:是否可以从 Handlebars 模板中迭代翻译文件中的属性