我可能只是在这里有一点大脑冻结,但我仍然坚持一个愚蠢的问题。我有一个角度/风帆应用程序,允许用户填写表格,并保存他们的进度,以便他们可以在以后回来。
初始模型通过创建(POST)以常规方式创建,然后通过更新(PUT)进行更改。问题是,当我删除一个键并保存(即用户清除输入字段,导致角度实际上从对象中删除键)时,它实际上并没有删除该键,因为更新的性质(特别是在风帆中)它只影响你的有效载荷中的密钥,并保留其他密钥。
让我试着进一步解释....
创建记录....
{
first : "Dan",
last : "Knight"
age : 40
}
更新有效载荷(PUT)....
{
first : "Danny"
// 'last' field not present as was cleared in form
age : 40
}
...结果
{
first : "Danny",
last : "Knight"
age : 40
}
期望的结果......
{
first : "Danny",
age : 40
}
我意识到我应该设置为null而不是删除字段,但我可以做的唯一方法是为每个表单字段设置$ watch,如果我检测到#34则设置为null ;" (空字符串),我真的不想设置几十个看起来很乱的观察者。
有什么想法吗?
答案 0 :(得分:0)
您可以在风帆模型/控制器中使用lodash.defaults
以确保缺少的字段具有所需的默认值
var defaults = {
first: null,
last: null,
age: null
};
_.defaults(resBody, defaults);