Ember覆盖的模型属性未被序列化

时间:2016-10-27 09:01:37

标签: ember.js ember-model

我正在使用Ember 2.4.2

app/models/product.js
export default DS.Model.extend({
    type: attr('string'),
    color: attr('string')
});

app/models/blue-bags.js
export default Product.extend({
    type: Ember.computed('color', function() {
        if (this.get('color') === 'blue') {
            return 'bag';
        }
        return '';
    })
});

这些属性的使用形式显示,当颜色为蓝色时,类型设置为“bag”,但是将此数据发送到服务器时(将颜色发送到服务器时,颜色为蓝色)。

这是覆盖模型属性的正确方法吗?

1 个答案:

答案 0 :(得分:0)

解决方案是在模型中创建一个观察者而不是覆盖属性,因为@lock提到只有用attr定义的属性才会传递给你的序列化器(因为它有一个序列化方法)。

colorChanged: Ember.observer('color', function() {
  if (this.get('color') === 'blue') {
      this.set('product_type', 'bag');
  }
})