我想知道是否有办法将计算属性与 ember 数据一起使用,例如我想根据其他属性的数量计算并保存totalPrice。我认为我能想到使用观察者来做到这一点的唯一方法
最佳答案
Ember 数据模型
和普通的 Ember 对象
没有什么不同,您可以在模型上定义计算属性,就像为组件、 Controller 、路由所做的那样等请查看official ember guide 。它有以下模型示例:
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;
})
});
与上面类似的东西应该可以正常工作。
在有关将计算属性发送到后端的评论之后;某事。类似于下面的序列化器
自定义应该可以工作:
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;
},
});
关于ember.js - Ember 数据: computed attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53834858/