常见的EmberJS路线事件

时间:2013-08-06 19:38:37

标签: javascript ember.js

有没有办法让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'. 

1 个答案:

答案 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
    }
  }
});

希望它有所帮助。