0

我的 ember 视图是其他 DOM 元素的容器。我有兴趣独立处理其中一些包含 DOM 元素的事件。例如,在backbone.js 的视图中,我们可以将它们处理为

events: {
   'click #some_button': 'handle_button_click',
   'click #some_anchor': 'handle_anchor_click'
}

鉴于emberjs如何做类似的事情?我是否必须为我有兴趣处理事件的每个 DOM 元素创建独立的视图?

4

2 回答 2

1

无需为每个元素创建视图。

只需使用{{action}}助手,您就可以在控制器或路由器中捕获这些事件。

更多信息在这里:http ://emberjs.com/guides/templates/actions/

于 2013-03-07T09:28:54.187 回答
0

在 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功能的代码,除非您觉得使其更加模块化......

于 2013-03-07T14:05:46.780 回答