我正在使用Ember从REST API
中检索特定记录,并将其显示在模板上。我可以从串行器中控制台记录有效负载,它可以正确显示对象,但是我的模板似乎无法访问它。
有效负载具有以下结构:
{
_id: 5cb0f8bd3b74cf22b75e1a37,
name: 'Mu',
hour: 0,
day: 0,
week: 0,
month: 0,
year: 753,
size: 1,
detail: 1,
createdAt: 2019-04-12T20:44:45.691Z,
updatedAt: 2019-04-12T20:44:45.691Z,
__v: 0
}
我的余烬路线如下:
import Route from '@ember/routing/route';
export default Route.extend({
model() {
this.get('store').find('world', '5cb0f8bd3b74cf22b75e1a37');
},
})
我的适配器如下:
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
host: 'http://localhost:3000',
pastForType() {
return 'worlds';
},
});
这是我的世界余烬模型:
import Model from 'ember-data/model';
import DS from 'ember-data';
const { attr } = DS;
export default Model.extend({
name: attr('String'),
hour: attr('Number'),
day: attr('Number'),
week: attr('Number'),
month: attr('Number'),
year: attr('Number'),
size: attr('Number'),
detail: attr('Number')
});
有效负载由我的序列化程序标准化:
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
primaryKey: '_id',
normalizeResponse(store, primaryModelClass, payload, id, requestType) {
payload = { worlds: payload };
console.log(payload);
return this._super(store, primaryModelClass, payload, id, requestType);
}
});
调用路由时,控制台将输出以下内容:
Object { worlds: {…} }
该对象内部的数据正确,但是当我尝试访问车把模板中的{{model.name}}
时,什么都不会显示。
我是否无法通过某种方式将对象传递给模板?我是在错误地引用它吗?
答案 0 :(得分:1)
将模型挂钩替换为
model() {
return this.store.find('world', '5cb0f8bd3b74cf22b75e1a37');
}
答案 1 :(得分:1)
正如评论中已经提到的那样,您错过了返回路线model
的机会。因此,即使您的undefined
请求通过预期记录正确解析,路由的模型也为store.find()
。