Ember是否有可能加载多个模型而无需等待解析的承诺并仍然使用afterModel钩子?目前,我的代码如下所示:
export default Ember.Route.extend({
model() {
return Ember.RSVP.hash({
imports: this.store.findAll('import', {
skip: 0,
limit: 5
}),
latestimport: this.store.find('import', 'latest')
});
},
afterModel(model) {
...some modifications here...
}
}
由于使用了Ember.RSVP,页面加载会等待所有承诺在呈现之前解析。我可以在加载模型之前进行页面渲染吗?那么我还可以使用afterModel钩子吗?我的观点是,加载的数据只是辅助信息。我不希望因此而阻止整个渲染过程。我没有在文档中找到任何相关信息,尽管我觉得文档根本没有完整。
答案 0 :(得分:4)
请使用以下方法:
setupController(controller, model) {
this._super(controller, model);
Ember.RSVP.hash({
imports: this.store.findAll('import', {
skip: 0,
limit: 5
}),
latestimport: this.store.find('import', 'latest')
}).then(results => {
// ...some modifications here...
controller.set('model', results);
});
}
model.imports
,model.latestimport
。答案 1 :(得分:1)
而不是使用Ember.RSVP.hash
包装代码,而只是传递哈希对象
model() {
return {
imports: this.store.findAll('import', {
skip: 0,
limit: 5
}),
latestimport: this.store.find('import', 'latest')
})
},
setupController(controller, model) {
this._super(controller, model);
// model.latestimport.then(...)
// model.imports.then(...)
}