gpt4 book ai didi

Backbone.js - model.save() 不触发 PUT 请求

转载 作者:行者123 更新时间:2023-12-04 00:30:48 25 4
gpt4 key购买 nike

我有一个使用 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({});
}
}
});

最佳答案

如果你的模型是新的,那么在你保存它的时候它会触发一个 post 方法。
但是,如果您的模型不是新模型并且您正在更新它,它将触发 PUT。

如果这对您不起作用,则可能是因为您的模型没有 id 属性,以防您使用具有不同名称的 id,例如 taskID,那么在您的模型中,您必须将 idAttribute 设置为 taskID 以便主干使用此属性作为 Id,一切都会正常。

像这样:

 var Task= Backbone.Model.extend({
idAttribute: "taskId"
});

这是 Idattibute 文档的链接
http://backbonejs.org/#Model-idAttribute

另一个问题可能是保存调用中的 {}
试试吧
 this.model.save(); 

而不是
 this.model.save({});

关于Backbone.js - model.save() 不触发 PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17223356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com