在ember
路由中存在多個beforeModel
掛鉤有什麼問題嗎?Ember.js - 多個beforeModel掛鉤
例如,如果我有一個mixin
,它將添加一個beforeModel
掛鉤,然後在路由中的另一個beforeModel
「混入」。
在ember
路由中存在多個beforeModel
掛鉤有什麼問題嗎?Ember.js - 多個beforeModel掛鉤
例如,如果我有一個mixin
,它將添加一個beforeModel
掛鉤,然後在路由中的另一個beforeModel
「混入」。
不,如果你在路由和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(參數1,參數2 ......)來調用基方法。
App.IndexRoute = Ember.Route.extend(App.Foo,{
beforeModel: function(transition, queryParams){
this._super(transition, queryParams);
console.log('bar');
},
model: function() {
return ['red', 'yellow', 'blue'];
}
});
kingpin2k是正確的,在他的榜樣的IndexRoute的beforeModel鉤獲勝。請注意,您可以調用App.Foo中繼承的(但是被覆蓋的)行爲與this._super();
。
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'];
}
});