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();
我正在尝试更新 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"
(HTTPPOST
), if the model already exists on the server, the save will be an "update" (HTTPPUT
).
模型被认为是 '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();