骨干model.save()被发送PUT POST而不是(Backbone model.save()

2019-07-03 19:42发布

我把节省使用这样的:

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具有0的ID(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_",

Answer 1:

ID甚至不应该存在一个新的条目。 问题是你没有表现出部分 - 在实例化,创建和填充模型中的一部分。

下面是一个报价的骨干文档 :

如果模型还没有一个id ,它被认为是新的。

它是从你的代码,你分配一个id属性明确。 后端应该这样做。 而且,由于你是一个客户端上做,骨干假定它是不是新的,并使用PUT



Answer 2:

如果以上的答案是在正确的model.save “ING有一个id属性骨干会做一个PUT而不是POST

这种行为可以简单地通过增加覆盖type: 'POST'您保存块:

var fooModel = new Backbone.Model({ id: 1});

fooModel.save(null, {
  type: 'POST'
});


Answer 3:

您可以指定默认的ID,只要确保它被设置为null (是否新款将被设置为true)。

在你的情况下,它必须是

LineNo_: null


文章来源: Backbone model.save() is sending PUT instead of POST