Передача массива строковых данных в модель в угольнике - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть ответ API, который возвращает что-то вроде этого

{
  texts: ["Text1", "Text2", "Text3"]
}

Я создал модель Ember следующим образом (text.js - файл модели)

import DS from 'ember-data';
export default DS.Model.extend({});

Я не уверено том, что добавить в атрибуты для модели, поскольку ответ представляет собой массив строк.

Я также получаю ошибку

You must include an 'id' for text in an object passed to 'push'

с приведенным выше фрагментом.

Я новичок в ember.js и немного застрял на этом этапе.

1 Ответ

0 голосов
/ 10 сентября 2018

Это не особенно хороший API. Но иногда вы не контролируете API и просто заставляете его работать с Ember.

Я рекомендую использовать преобразование массива, представленное здесь: https://gist.github.com/NuckChorris/927d7d4ba757abd26b30#file-array-js

Вот код:

import Ember from 'ember';
import DS from 'ember-data';

export default DS.Transform.extend({
  deserialize: function(value) {
    if (Ember.isArray(value)) {
      return Ember.A(value);
    } else {
      return Ember.A();
    }
  },
  serialize: function(value) {
    if (Ember.isArray(value)) {
      return Ember.A(value);
    } else {
      return Ember.A();
    }
  }
});

Скопируйте и вставьте этот код в app/transforms/array.js.

Тогда вы сможете сделать:

import DS from 'ember-data';
export default DS.Model.extend({
  texts: DS.attr('array')
});

Для получения дополнительной информации о преобразованиях см. Руководства здесь: https://guides.emberjs.com/v3.4.0/models/defining-models/#toc_transforms

...