在我的简单主干应用程序中,我正在尝试更新模型,并且每次发送一个put请求而不是post。
嗯,这是我的名为 categoryModel
的模型define(['Backbone'], function (Backbone) {
var CategoryModel = Backbone.Model.extend({
defaults: {
ID: '',
Name: 'Empty',
TagID: '0',
GID: '0'
},
idAttribute: "ID",
initialize: function () {
if (!this.get('Name')) {
this.set({ 'Name': this.defaults.Name });
}
}
});
return CategoryModel;
});
这是集合
define(['Backbone','../../models/categories/categoryModel'], function (Backbone, categoryModel) {
var CategoryCollection = Backbone.Collection.extend({
url: '/parentcategory/Actions',
model: categoryModel
});
return new CategoryCollection;
});
这是我在视图中的方法
<{1>} 上的
keychange event
on createNewItem: function (e) {
var $this = $(e.currentTarget);
$('#selectedCategoryName').html($this.val());
//it creates a new model
globals.NewCategory = new CategoryModel({ Name: $this.val() });
}
handleDrop event
categoriesCollection.create 被调用两次。首先用于设置TagID(在成功请求中获取ID),其次用于设置GID。 由于ID已经设置,在第二次调用时不应该发送POST请求而不是PUT吗?
我做错了什么?
由于
答案 0 :(得分:0)
如果模型是新的(没有ID属性),标准行为是发送POST
,如果设置了模型ID,则发送PUT
。
在您的情况下,它按设计运行,如果您希望它使用POST
发送更新,您必须覆盖Backbone.sync才能按需工作,但我认为您更容易制作后端RESTful并为更新创建一个PUT
侦听器控制器方法。
另一件事,如果我说得对,你使用create()
来更新集合中的模型,我建议你不要这样做,而是直接在你想要的模型中使用save()
更新,代码将更具可读性。
干杯。