我正在学习ember.js(ember-cli
和ember-data
= 2.7)并面临使用模型的问题。某些模型显示为“未定义”
import DS from 'ember-data';
export default DS.Model.extend({
revision: DS.attr('number'),
pub_date: DS.attr('date'),
contenido: DS.attr('string'),
contenidoHtml: DS.attr(),
cambios: DS.attr('string'),
cambiosHtml: DS.attr(),
notify: DS.attr('boolean'),
URI: DS.attr('string'),
firmas: DS.attr()
});
我有一个简单的序列化程序,如下所示:
// serializers/application.js
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
primaryKey: 'id'
});
这是来自API的回复:
{
"data": [
{
"attributes": {
"URI": "",
"cambios": "Commit inicial",
"cambiosHtml": "<p>Commit inicial</p>",
"contenido": "No por mucho _madrugar_, amanece más __temprano__.",
"contenidoHtml": "<p>No por mucho <em>madrugar</em>, amanece más <strong>temprano</strong>.</p>",
"firmas": {
...
"reviso": "Zamora"
},
"notify": false,
"pub_date": "2011-09-30",
"revision": 0
},
"id": "7a09d345-27cc-45ef-bf58-488354c25239",
...
],
"links": {
...
},
"meta": {
...
}
}
}
现在,根据Ember Inspector,字段contenidoHtml
,cambiosHtml
和pub_date
未定义或为空。
我错过了什么吗?
答案 0 :(得分:1)
在Ember Data中,惯例是在模型上使用属性名称
checksum(R)
- 不是这样的,所以应该更改为pubDate
JSONAPISerializer期望在文档中对属性进行划分 服务器返回的有效负载:
pub_date
- 将其更改为cambiosHtml
cambios-html
- 将其更改为contenidoHtml
contenido-html
- 将其更改为pub_date
如果您无法控制API,那么您可能希望通过运行以下ember-cli命令来创建特定于模型的序列化程序,
pub-date
应用/串行化器/模型name.js 强>
ember generate serializers 'model-name'
https://guides.emberjs.com/v2.8.0/models/customizing-serializers/#toc_attribute-names