我的 ember 视图是其他 DOM 元素的容器。我有兴趣独立处理其中一些包含 DOM 元素的事件。例如,在backbone.js 的视图中,我们可以将它们处理为
events: {
'click #some_button': 'handle_button_click',
'click #some_anchor': 'handle_anchor_click'
}
鉴于emberjs如何做类似的事情?我是否必须为我有兴趣处理事件的每个 DOM 元素创建独立的视图?
我的 ember 视图是其他 DOM 元素的容器。我有兴趣独立处理其中一些包含 DOM 元素的事件。例如,在backbone.js 的视图中,我们可以将它们处理为
events: {
'click #some_button': 'handle_button_click',
'click #some_anchor': 'handle_anchor_click'
}
鉴于emberjs如何做类似的事情?我是否必须为我有兴趣处理事件的每个 DOM 元素创建独立的视图?
无需为每个元素创建视图。
只需使用{{action}}
助手,您就可以在控制器或路由器中捕获这些事件。
在 EmberJS 中,您不需要将事件绑定到函数。Ember 为 DOM 事件提供默认绑定。我建议您阅读EmberJS 事件指南以了解绑定。
您还想在元素上绑定函数,您可以按照以下方式执行此操作。我正在以您的 BBJS 示例作为代码,这可以帮助您更好地理解。
var App.TestView = Ember.View.extend({
click : function(e) {
if($(e.target).attr('id')==='some_button') {
this.handle_button_click(e);
} else if($(e.target).attr('id')==='some_anchor'){
this.handle_anchor_click(e);
}
},
handle_button_click : function(e) {//someCode};
handle_anchor_click : function(e) {//someCode};
});
实际上,您可以在条件内拥有handle_button_click
或具有handle_anchor_click
相同click
功能的代码,除非您觉得使其更加模块化......