EmberJS Mirage Зависимые атрибуты не обновляются в патче - PullRequest
0 голосов
/ 09 июля 2019

Я объявил свойства на фабрике Mirage, как показано ниже, и использую зависимые атрибуты, как указано в документах .

price() {
  return faker.finance.amount(100000, null, 0);
},

priceDisplay() {
  return '$' + this.price;
}

Когда я делаю патч для обновления price, я ожидаю, что priceDisplay будет обновляться так же, как свойство computed, однако это не так.

Кто-нибудь знает, возможно ли это, или это ограничение Миража?

1 Ответ

1 голос
/ 09 июля 2019

Фабрика Mirage предназначена для генерации тестовых данных:

Фабрики - это классы, которые помогают вам организовать логику создания данных, облегчая определение различных состояний сервера во время разработки или в тестах.

Фабрика запускается только один раз server.create('foo') или server.createList('foo', 10) для создания начальных данных для записей.Это поможет вам избежать дублирования кода в тестах и ​​сценариях.Но это не модель, представляющая эту запись.

На самом деле Mirage не поддерживает что-то вроде вычисляемых свойств из коробки.Но вы можете добиться этого, настроив используемый сериализатор .Переопределение serialize метода должно сработать:

// serializers/product.js

import { JSONAPISerializer } from 'ember-cli-mirage';

export default JSONAPISerializer.extend({
  // This is how to call super, as Mirage borrows [Backbone's implementation of extend](http://backbonejs.org/#Model-extend)
  let json = Serializer.prototype.serialize.apply(this, arguments);

  json.priceDisplay = '$' + json.price;

  return json;
});

Но из вашего примера, приведенного выше, я хотел бы задать вопрос, является ли возврат отформатированной строки из API правильным подходом.Форматирование данных должно быть проблемой клиента на мой взгляд.В противном случае вы быстро столкнетесь с ограничениями, если вам потребуется поддержка локализации или другие форматы в вашем клиенте.

...