我刚刚开始使用 Ember.js,但我仍然不明白为什么事件会绑定在视图中,如下所示:
App.ClickableView = Ember.View.extend({
click: function(evt) {
alert("ClickableView was clicked!");
}
});
在 JavaScriptMVC 和 Sencha Touch 中,像这样的事情是在控制器中处理的。例如,多个控制器如何绑定到同一个事件?
我刚刚开始使用 Ember.js,但我仍然不明白为什么事件会绑定在视图中,如下所示:
App.ClickableView = Ember.View.extend({
click: function(evt) {
alert("ClickableView was clicked!");
}
});
在 JavaScriptMVC 和 Sencha Touch 中,像这样的事情是在控制器中处理的。例如,多个控制器如何绑定到同一个事件?
在最新版本的 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!");
}
})
如果您在其他州有其他点击事件,应用程序不会感到困惑,因为它知道它处于哪个状态/路由。
您可以在视图或控制器中处理您的事件,但建议在路由器中处理它们。