在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'];
}
});