1

我刚刚开始使用 Ember.js,但我仍然不明白为什么事件会绑定在视图中,如下所示:

App.ClickableView = Ember.View.extend({
  click: function(evt) {
     alert("ClickableView was clicked!");
  }
});

在 JavaScriptMVC 和 Sencha Touch 中,像这样的事情是在控制器中处理的。例如,多个控制器如何绑定到同一个事件?

4

1 回答 1

0

在最新版本的 ember 中,事件的默认上下文已从视图更改为路由器(控制器)。该事件将由当前路由器(状态)处理,如下所示:

root : Ember.Route.extend({
    index : Ember.Route.extend({
        route : '/',
        connectOutlets : function(router) {
            var ac = router.get('applicationController');
            ac.connectOutlet({
                name : 'topnav',
                outletName : 'topnav'
            });
        },
        click: function(event, context) {
           alert("ClickableView was clicked!");
        }
})

如果您在其他州有其他点击事件,应用程序不会感到困惑,因为它知道它处于哪个状态/路由。

您可以在视图或控制器中处理您的事件,但建议在路由器中处理它们。

于 2012-12-22T01:49:45.343 回答