2016-09-10 2 views
0

Я изучаю (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": { 
    ... 
    } 
    } 
} 

Сейчас, по словам Эмбер Инспектор, поля contenidoHtml, cambiosHtml и pub_date: undefined или пусто.

Я что-то не хватает?

ответ

1

В Ember данных конвенция является camelize имен атрибутов на модели

pub_date - не follwed это так и должно быть изменено на PubDate

JSONAPISerializer ожидает атрибуты, которые будут dasherized в документе Полезная нагрузка, возвращаемая вашим сервером:

cambiosHtml - изменить его cambios-html
contenidoHtml - изменить его contenido-html
pub_date - изменить его pub-date

Если вы не имеете контроля над API, то вы можете создать модели конкретных сериализаторы, выполнив ниже уголек -cli команда,

ember generate serializers 'model-name' 

приложение/сериализаторы/модель-name.js

import DS from 'ember-data'; 

export default DS.JSONAPISerializer.extend({ 
    attrs: { 
    cambiosHtml: 'cambiosHtml', 
    contenidoHtml: 'contenidoHtml', 
    pubDate: 'pub_date' 
    } 
}); 

https://guides.emberjs.com/v2.8.0/models/customizing-serializers/#toc_attribute-names

Смежные вопросы