有没有办法让Ember中的多条路线共享公共事件?
样品:
App.CommonMenu = Ember.Mixin.create({
events: {
onDelete: function() {}
}
});
App.MainMenu = Ember.Route.extend(App.CommonMenu, {
events: {
onSave: function() {}
}
});
App.StoreMenu = Ember.Route.extend(App.CommonMenu, {
events: {
onSave: function(){}
}
})
我只是问,因为我继续得到一个错误,当点击一个按钮时,我得到类似的东西:
Uncaught Error: Nothing handled the event 'onDelete'.
答案 0 :(得分:1)
我可以考虑在路线上全局处理事件的更好方法是在events
ApplicationRoute
哈希中定义它们
App.ApplicationRoute = Ember.Route.extend({
events: {
myEvent: function() {
// do stuff
}
}
});
App.MainMenu = Ember.Route.extend({
events: {
onSave: function() {}
}
});
App.StoreMenu = Ember.Route.extend({
events: {
onSave: function(){}
}
});
您还可以使用一些路线处理ApplicationRoute
中定义的相同事件,例如myEvent
只要您从该处理程序返回true
,它就会一直冒泡到ApplicationRoute
myEvent
处理程序。
App.SomeOtherRoute = Ember.Route.extend({
events: {
myEvent: function(){
// do stuff
return true; // this will make the event bubble up all the way to the ApplicationRoute
}
}
});
希望它有所帮助。