在beforeModel
路线中有多个ember
挂钩有什么问题吗?
例如,如果我有一个mixin
添加beforeModel
个钩子,然后在路线中添加另一个beforeModel
,那么"混合到&#34 ;
答案 0 :(得分:4)
不,如果你在路线和mixin上定义了它,那么路线就会胜出。在下面的示例中,只会调用bar
。
App.Foo = Ember.Mixin.create({
beforeModel: function(transition, queryParams){
console.log('foo');
}
})
App.IndexRoute = Ember.Route.extend(App.Foo,{
beforeModel: function(transition, queryParams){
console.log('bar');
},
model: function() {
return ['red', 'yellow', 'blue'];
}
});
http://emberjs.jsbin.com/runufowe/1/edit
如果你愿意,你可以从扩展类中调用this._super(param1,param2 ...)来调用基本方法。
App.IndexRoute = Ember.Route.extend(App.Foo,{
beforeModel: function(transition, queryParams){
this._super(transition, queryParams);
console.log('bar');
},
model: function() {
return ['red', 'yellow', 'blue'];
}
});
答案 1 :(得分:4)
kingpin2k是正确的,在他的例子中,IndexRoute的beforeModel钩子获胜。值得一提的是,您可以使用this._super();
从App.Foo调用继承(但覆盖)的行为。
App.Foo = Ember.Mixin.create({
beforeModel: function(transition, queryParams){
console.log('foo');
}
});
App.IndexRoute = Ember.Route.extend(App.Foo,{
beforeModel: function(transition, queryParams){
this._super();
console.log('bar');
},
model: function() {
return ['red', 'yellow', 'blue'];
}
});