The*_*rez 12 put backbone.js backbone-model
我有一个使用Backbone.js的基本应用程序,它没有进行PUT调用(更新模型).从前端开始,我调用模型save函数不会进行PUT调用; 但是,如果我用它替换它destroy,它会对后端进行DELETE调用.任何人都知道可能是什么问题?未触发PUT请求的saveTask功能是该功能.
App.Views.Task = Backbone.View.extend({
template: _.template("<label>ID:</label><input type='text' id='taskId' name='id' value='<%= _id %>' disabled /><br><label>Title:</label><input type='text' id='title' name='title' value='<%= title %>' required/><br><label>Content:</label><input type='text' id='content' name='content' value='<%= content %>'/><br><button class='save'>Save</button>"),
events: {
"change input":"change",
"click .save":"saveTask"
},
render: function(eventName){
$(this.el).html(this.template(this.model.toJSON()));
//console.log(this.generateTemplate());
return this;
},
change: function(event){
var target = event.target;
console.log('changing ' + target.id + ' from: ' + target.defaultValue + ' to: ' + target.value);
change[target.name] = target.value;
this.model.set(change);*/
},
saveTask: function(){
this.model.set({
title:$("#title").val(),
content:$("#content").val()
});
if(this.model.isNew()){
App.taskList.create(this.model);
} else {
this.model.save({});
}
}
});
Run Code Online (Sandbox Code Playgroud)
Ray*_*_on 19
如果您的模型是新的,那么在您保存它时它将触发一个post方法.如果您的模型不是新的并且您正在更新它,它将触发PUT.
如果这对您不起作用,可能是因为您的模型没有id属性,以防您使用具有不同名称的id,例如taskID,那么在您的模型中,您必须将idAttribute设置为taskID,因此使用此属性作为Id,一切都将正常.
像这样:
var Task= Backbone.Model.extend({
idAttribute: "taskId"
});
Run Code Online (Sandbox Code Playgroud)
这里是Idattibute http://backbonejs.org/#Model-idAttribute文档的链接
另一个问题可能是保存通话中的{}只是
this.model.save();
Run Code Online (Sandbox Code Playgroud)
代替
this.model.save({});
Run Code Online (Sandbox Code Playgroud)