我正在尝试更新主干上的数据。但是我的save()函数会发布put的插入内容。
editEvent:function(e){
var departments=new Department();
departments.set("departmentName",this.$el.find(".departmentName").val());
departments.save();
this.render();
},
departmentModel
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>
答案 0 :(得分:2)
这是设计,这是Backbone docs for the save
function:
如果模型
isNew
,则保存将为"create"
(HTTPPOST
),如果 模型已经存在于服务器上,保存将是“更新”(HTTPPUT
)。
如果模型没有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?
答案 1 :(得分:0)
我解决了使用id的问题。如果你尝试没有id的PUT请求,骨干思考&#34;它是一个新的模型&#34;但是你保存了数据的id值,骨干思考PUT请求。
这就是为什么我尝试将带有ID的请求放在那里,并且这已经有效了。
departments.set("departmentID",this.$el.find(".departmentName").data("id"));
departments.set("departmentName",this.$el.find(".departmentName").val());
departments.save();