我希望通过多个维度来定义费率。在后端使用一个表,它有两个重要的列键和值。 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中处理这些场景的正确方法是什么?
答案 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'),
});