无需路由器即可将数据填充到ember控制器

时间:2015-06-16 10:20:00

标签: ember.js ember-data

我尝试填充没有setupController钩子的ember控制器,如下所示:

Ember.$.getJSON('http://url.com').then(function (response) {
 self.store.pushPayload('record', response);
 self.get('controllers.consultation').set('model', self.store.push('consultation', response.consultation));
});

控制器consultation的模型包含hasMany字段records

 export default DS.Model.extend({
        records: DS.hasMany('record', { async: true }),
        ....
    });

当我在模板中调用controller.records时,它不起作用(空),但其他字段工作正常。

问题:为什么controller.records为空?

注意:当我在consultation控制器中创建包含咨询对象的字段时,它可以正常工作。

self.get('controllers.consultation').set('controllerObj', self.get('controllers.consultation').set('model', self.store.push('consultation', response.consultation)));  

1 个答案:

答案 0 :(得分:0)

我尝试在model.records之后立即解决model

var controller = this.get('controllers.consultation');
Ember.$.getJSON('http://url.com').then(function (response) {
   // ... your magic with store
   // var consultation = consultation instance extracted from response
   controller.set('model', consultation);
   return consultation.get('records'); // or your custom api request for model.records
}).then(function (records) {
   controller.set('modelRecords', records) // or your custom request records extraction
});

然后在控制器中你可以设置计算records

// controller
records: function() {
  // your logic here
}.property('modelRecords.[]')

{{records}}应该在模板中工作

//template
{{records.length}}