天儿真好,
我试图将模型数据从store.findAll()调用加载到ember-power-select组件中。 findAll()中的数据很好地加载到组件中,但是我需要设置初始选择的项目,而我所做的一切似乎都没有。
答案 0 :(得分:1)
您的解决方案会询问服务器两次。检查此解决方案(es6语法)
setupController(controller, model) {
controller.set('model', model);
this.store.findAll('club').then(clubs => {
controller.set('clubs', clubs);
// i am not sure if the function is called filter, but it should be close enough
return clubs.filter(club => clubs.get('id') === model.get('clubId')).get('firstObject');
}).then(selectedClub => controller.set('selectedClub', selectedClub)).catch(err => {
console.log("Error:", err);
});
}
答案 1 :(得分:0)
诀窍是在使用store.query将元素拉出DS缓存后,将get()方法与'firstObject'一起使用。
这就是我最后做的事 - 如果有人有更优雅的方式这样做,我很乐意听到......
setupController: function(controller, model) {
var _this = this;
controller.set('model',model);
_this.store.findAll('club')
.then(function(results){
controller.set('clubs', results);
return _this.store.query('club', {id:model.get('clubId')});
})
.then(function(result){
controller.set('selectedClub', result.get('firstObject'));
})
.catch(function(err){
console.log("Error:",err);
});
},