Ember模型不匹配

时间:2017-01-05 13:04:45

标签: ember.js ember-data

我希望通过多个维度来定义费率。在后端使用一个表,它有两个重要的列键和值。 value包含json数据。这样可以方便地以多种方式定义费率。一种这样的可能性如下所示

key - user:1
value - 
[
  {
    "id": 1,
    "activity": 1,
    "effectiveDate": null,
    "rate": {
      "currency": "currency:1",
      "amount": 10
    }
  },
  {
    "id": 2,
    "activity": 2,
    "effectiveDate": null,
    "rate": {
      "currency": "currency:1",
      "amount": 20
    }
  }
]
在UI上

需要跨多行显示。唯一性由用户,活动和effectiveDate定义。 所以它会 -

user,  activity,  effectivedate, currency,   amount
user:1 activity:1                currency:1, 10
user:1 activity:2                currency:1, 20

所以模型如下:

export default DS.Model.extend({
  userId: DS.attr('string'),
  activityId: DS.attr('string'),
  rateAmount: DS.attr('number'),
  effectiveDate: DS.attr('date'),
  rateCurrencyId: DS.attr('string'),
});

如何将单个键值从API转换为上面显示的模型?删除前端的记录并不一定意味着删除键值。

我应该创建一个对应于UI的模型和另一个用于键值的模型,并将更新从一个模型转换为另一个模型,然后保存第二个模型以将其推回到服务器?这看起来很麻烦。

我检查了转换但这有助于我必须调整数据类型。这里模型的记录数量不匹配。

在ember中处理这些场景的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您需要创建特定于模型的序列化程序并覆盖normalizeResponse并将有效负载转换为所需模型的所需格式,

export default DS.Model.extend({
  userId: DS.attr('string'),
  activityId: DS.attr('string'),
  rateAmount: DS.attr('number'),
  effectiveDate: DS.attr('date'),
  rateCurrencyId: DS.attr('string'),
});