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