我用这个叫保存:
console.log(this.model.isNew());
console.log(this.model);
this.model.save({}, {
success: function (model, response, options) {
console.log(response);
},
error: function (model, xhr, options) {
console.log(xhr.result.Errors);
}
});
isNew()
返回false。但是this.model
的输出的ID为0.(this.model.id也是0)
我的网址是url: ROOTAREA + "/Expenses/Entry/",
更新工作正常,并按预期使用PUT。
编辑:这是我模特的一部分:
defaults: function () {
return {
DocumentDate: "",
JobNo_: "",
PhaseCode: "",
WorkTypeCode: "",
Description: "",
Quantity: 0,
UnitCost: 0,
ExpenseCurrencyCode: "",
ReimbursementCurrencyCode: "",
UnitofMeasureCode: "DIEM",
LineNo_: 0
};
},
idAttribute: "LineNo_",
答案 0 :(得分:27)
新条目甚至不应存在ID。 问题在于您未显示的部分 - 在您实例化的部分中,创建并填充模型。
以下是the Backbone documentation的引用:
如果模型还没有
id
,则认为它是新的。
从您的代码中可以清楚地看出,您正在分配一个id属性。
你的后端应该这样做。
而且由于您是在客户端上进行的,因此骨干网认为它不是新的,并使用PUT
答案 1 :(得分:19)
以上答案是正确的,如果model
.save
id
具有PUT
属性主干,则会POST
而不是type: 'POST'
{1}}。
只需将var fooModel = new Backbone.Model({ id: 1});
fooModel.save(null, {
type: 'POST'
});
添加到保存区块即可覆盖此行为:
{{1}}
答案 2 :(得分:3)
您可以在默认值中指定ID,只需确保将其设置为null
(isNew将设置为true)。
在你的情况下,它必须是
LineNo_: null