我有一台加载“Place”的路由器。
App.PlaceRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('place', params.place_id);
},
setupController: function(controller, model) {
this._super(controller, model);
//The promise way ?
var placeId = model.get('id');
var myRecords = this.store.find('record', {place:placeId}).then(function(recs){
console.log("DOES IT HAPPEN ?"); //Never logged
this.controllerFor('records').set('content', recs);
});
//Or is the good way below ?
//this.controllerFor('records').set('content', myRecords);
//The only that works (which is not I want but displays as I would like):
//this.controllerFor('records').set('content', App.Record.FIXTURES);
this.controllerFor('places').set('content', this.store.find('place'));
},
renderTemplate: function(){
this.render('place', {
controller: 'place'
});
this.render('display-graph-list', {
into: 'place',
outlet: 'graphs',
controller: 'records'
});
}
});
此地方已关联“记录”。
App.Place = DS.Model.extend({
name: attr('string')
, desc: attr('string')
, records: hasMany('record')
, site: belongsTo("site")
});
App.Record = DS.Model.extend({
name: attr('string'),
type: attr('string'),
data: attr('string'),
belongsTo: attr('place')
});
如ember-data 1.0.0 Transition Guide所示,它使用promises来检索数据,但在这里没有任何反应。
这是一个JSbin来看我的意思: http://jsbin.com/iMEdOCe/6/
当我导航到某个地方时,我应该至少显示一条记录。
我无法弄清楚如何加载和显示记录。我错过了什么?
有没有更好的方法来显示模型的子项目数组?
答案 0 :(得分:0)
这是ember-data 1.0.0-beta.1中的两个问题的组合
缺少显示是由于hasMany / belongsTo关系:将这些行注释到App.Place和App.Record中会显示一些内容。
但是会出现另一个问题:不应使用'data'关键字。
用'datapath'之类的东西替换它可以使它工作。
编辑: 问题通过Ember-data 1.0.0-beta.2解决了