例如,我想知道是否可以将计算的属性与余烬数据一起使用,我希望基于其他属性的数量来计算并保存totalPrice。我认为只有这样,我才能想到使用观察者
答案 0 :(得分:4)
Ember data model
和普通Ember Object
之间没有什么不同,您可以像在组件,控制器,路由等中一样在模型上定义计算属性。请检查{{3 }}。它具有以下模型示例:
import DS from 'ember-data';
import { computed } from '@ember/object';
export default DS.Model.extend({
firstName: DS.attr(),
lastName: DS.attr(),
fullName: computed('firstName', 'lastName', function() {
return `${this.firstName} ${this.lastName}`;
})
});
其中fullName
被定义为取决于firstName
和lastName
的计算属性。让我们根据需要创建一个包含totalPrice
的人工模型:
import DS from 'ember-data';
import { computed } from '@ember/object';
export default DS.Model.extend({
originalPrice: DS.attr('number'),
vat: DS.attr('number'),
discount: DS.attr('number')
totalPrice: computed('originalPrice', 'vat', 'discount', function() {
return this.originalPrice + this.vat - this.discount;
})
});
与上面类似的东西应该可以正常工作。
在将计算的属性发送到后端的评论之后;某事与以下serializer
的自定义类似,应该可以工作:
import DS from 'ember-data';
export default DS.JSONAPISerializer.extend({
serialize(snapshot, options) {
let json = this._super(...arguments);
json.totalPrice = snapshot.record.get('totalPrice')
return json;
},
});