0

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

1 回答 1

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(){}
  }
});

你也可以有一些路由来处理在你的ApplicationRouteeg中定义的相同事件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
    }
  }
});

希望能帮助到你。

于 2013-08-06T20:44:58.550 回答