Backbone save() 方法 Post 而不是 Put

Backbone save() method Post insead of Put

我正在尝试更新 backbone.But 我的 save() 函数 post 而不是 put.

上的数据
editEvent:function(e){
         var departments=new Department();
       departments.set("departmentName",this.$el.find(".departmentName").val());
            departments.save();

            this.render();

        },

部门模型

    var Department = Backbone.Model.extend({
    urlRoot: "/rest/department",
    idAttribute:'departmentID'

    }
});
return Department;

模板

    <th>
    <span>{{user.department.departmentName}}</span>
    <input data-placement="top" title="Boş geçilemez!" class="form-control text-center departmentName" type='text'
           style='display: none;'  value='{{user.department.departmentName}}'/>
</th>

这是设计使然,这里是 Backbone docs for the save function 的片段:

If the model isNew, the save will be a "create" (HTTP POST), if the model already exists on the server, the save will be an "update" (HTTP PUT).

模型被认为是 'New' 如果它没有 id

由于您是第一次创建模型,Backbone 将按原样使用 POST 方法,因为这意味着您正在创建新资源。有关 meaning of HTTP verbs.

的更多信息

我的建议是在服务器端解决这个问题并为 POST 和 PUT 制作单独的处理程序,但如果你真的想强制使用 PUT 方法,这里有一些提示:What is the least ugly way to force Backbone.sync updates to use POST instead of PUT?

我使用 id.If 解决了问题,你尝试不带 id 的 PUT 请求,backbone 认为 "it's a new model"。但你使用数据的 id 值保存,backbone 认为 PUT请求。

这就是为什么我尝试使用 id 发出请求并且成功了。

departments.set("departmentID",this.$el.find(".departmentName").data("id"));
          departments.set("departmentName",this.$el.find(".departmentName").val());
          departments.save();