![](/img/trans.png)
[英]Backbone.js: model.isNew() == true, but model.save() causes POST request instead of PUT
[英]Backbone model.save() is sending PUT instead of POST
我用這個叫保存:
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_",
對於新條目,甚至不應存在ID。 問題在於您未顯示的部分 - 在您實例化的部分中,創建並填充模型。
以下是Backbone文檔的引用:
如果模型還沒有
id
,則認為它是新的。
從您的代碼中可以清楚地看出,您正在分配一個id屬性。 你的后端應該這樣做。 而且由於你是在客戶端上進行的,因此骨干網認為它不是新的,並且使用PUT
上面的答案是正確的,如果你的model
.save
有一個id
屬性骨干將執行PUT
而不是POST
。
只需在保存塊中添加type: 'POST'
即可覆蓋此行為:
var fooModel = new Backbone.Model({ id: 1});
fooModel.save(null, {
type: 'POST'
});
您可以在默認值中指定ID,只需確保將其設置為null
(isNew將設置為true)。
在你的情況下它一定是
LineNo_: null
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.