如果我想在路由init上做某事,我使用
MyRoute = Ember.Route.extend({
init: function(){
// do stuff
}
})
如果我想为所有路由的初始化运行相同的函数,那该怎么办?有没有办法在没有单独通过每条路线的情况下全局完成?
答案 0 :(得分:2)
var InitializeMixin = Ember.Mixin.create({
__init: function() {
// do stuff
}.on('init')
});
App.MyRoute = Ember.Route.extend(InitializeMixin, {
});
只需将其混合到您要进行设置的任何路线中。另请注意,我使用了on('init')
而不是覆盖init
功能。这是一个更清洁(我认为),因为你不必打电话给this._super()
。
答案 1 :(得分:1)
扩展您的基本路线:
MyRoute = Ember.Route.extend({
init: function(){
this._super();
// do stuff
}
});
OtherRoute = MyRoute.extend({
init: function(){
this._super();
}
});
答案 2 :(得分:0)
两个答案都很好,但需要更改应用程序代码。在我的情况下,我想用它来切换样式表,所以每条路线都有它自己的样式表。我只需要它用于开发,在生产中我会将所有样式表编译成一个并删除切换样式表的代码。
在这种情况下,我发现将您的代码放入Ember核心(搜索var Route = EmberObject.extend
)
我也意识到,要切换样式表,最好不要为路由设置单独的样式表,而是为模板设置。
当我发现时,我会在此处发布如何操作:https://stackoverflow.com/questions/24068433/ember-change-stylesheet-for-every-template