如何使用带有Ember-Data结果的ember-power-select

时间:2015-12-07 12:37:41

标签: ember.js ember-data

天儿真好,

我试图将模型数据从store.findAll()调用加载到ember-power-select组件中。 findAll()中的数据很好地加载到组件中,但是我需要设置初始选择的项目,而我所做的一切似乎都没有。

2 个答案:

答案 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);
  });

},