EmberJS Mirage 依赖属性不更新补丁

EmberJS Mirage Dependent attributes do not update on patch

我已经在 Mirage 工厂中声明了一个属性,如下所示,并使用了 docs 中找到的依赖属性。

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

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

当我打补丁更新 price 时,我希望 priceDisplay 也能像 computed 属性 一样更新,但事实并非如此。

有谁知道这是否可行或者这是 Mirage 的限制?

Mirage 工厂用于生成测试数据:

Factories are classes that help you organize your data-creation logic, making it easier to define different server states during development or within tests.

工厂仅运行一次由server.create('foo')server.createList('foo', 10)为记录创建初始数据。这有助于您避免测试和场景中的代码重复。但它不是代表该记录的模型。

实际上,Mirage 不支持开箱即用的计算属性之类的东西。但是你可以通过 customizing the serializer used. Overriding the serialize method 来实现它应该做到这一点:

// 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 返回格式化字符串是否是正确的方法。在我看来,格式化数据应该是客户关心的问题。否则,如果您需要支持本地化或需要在您的客户端中使用不同的格式,您将很快 运行 受到限制。