Javascript 模型创建新行而不是编辑
我现在正在开发应用程序,当我创建一个组时,保存功能非常有效,模型被添加到集合中,并保存到数据库中,但是如果我想编辑我刚刚创建的组,当我点击保存时,新模型被创建(并发布请求),而不是正在编辑的数据和正在触发的PUT请求。这是我的保存功能-在编辑现有模型时,我没有触发PUT请求有什么原因吗Javascript 模型创建新行而不是编辑,javascript,backbone.js,backbone-views,backbone-model,Javascript,Backbone.js,Backbone Views,Backbone Model,我现在正在开发应用程序,当我创建一个组时,保存功能非常有效,模型被添加到集合中,并保存到数据库中,但是如果我想编辑我刚刚创建的组,当我点击保存时,新模型被创建(并发布请求),而不是正在编辑的数据和正在触发的PUT请求。这是我的保存功能-在编辑现有模型时,我没有触发PUT请求有什么原因吗 GroupModalHeaderView.prototype.save = function(e) { var $collection, $this; if (e) { e.preventDefa
GroupModalHeaderView.prototype.save = function(e) {
var $collection, $this;
if (e) {
e.preventDefault();
}
$this = this;
if (this.$("#group-name").val() !== "") {
$collection = this.collection;
if (this.model.isNew()) {
this.collection.add(this.model);
}
return this.model.save({ name: this.$("#group-name").val()}, {
async: false,
wait: true,
success: function() {
var modelID = $this.model.get('id');
return this.modal = new app.GroupModalView({
model: $this.collection.get(modelID),
collection: $this.collection
});
}
});
}
};
这是我的模型
Group.prototype.defaults = {
user_id: "",
name: "New Group",
email: "",
url: "",
telephone: "",
mobile: "",
fax: "",
people: ""
};
这是保存此.model之前的console.log
Group {cid: "c116", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
_changing: false
_events: Object
_pending: false
_previousAttributes: Object
email: ""
fax: ""
mobile: ""
name: "New Group"
people: ""
telephone: ""
url: ""
user_id: ""
wait: true
__proto__: Object
attributes: Object
changed: Object
cid: "c116"
collection: GroupCollection
id: 189
__proto__: ctor
Backbone.js触发POST请求而不是PUT的原因是您的模型没有与之关联的唯一标识符
id
。如果没有与您的模型关联的id
属性,Backbone.js将始终触发POST请求以将新条目保存到db
从主干网的网站:
保存模型。保存([属性],[选项])。。。如果模型是新的,则
如果模型已存在于上,则保存将是“创建”(HTTP POST)
服务器,则保存为“更新”(HTTP PUT)
阅读了解更多信息。Backbone.js触发POST请求而不是PUT的原因是您的模型没有与之关联的唯一标识符
id
。如果没有与您的模型关联的id
属性,Backbone.js将始终触发POST请求以将新条目保存到db
从主干网的网站:
保存模型。保存([属性],[选项])。。。如果模型是新的,则
如果模型已存在于上,则保存将是“创建”(HTTP POST)
服务器,则保存为“更新”(HTTP PUT)
阅读以了解更多信息。在发送保存请求之前,您需要在模型中设置
id
,但如果我执行console.log($this.model.get(“id”)在成功回调中,我可以看到模型ID?好的,在将模型保存到数据库之前,请给我console.log。如果您的模型在保存之前有ID,主干网就不可能发送POST,因为model.isNew()会返回false,model.isNew()会返回什么为您返回?当我第一次保存isNew returns true时,当我编辑isNew returns false时。编辑后,如果我添加我认为是新的组,isNew returns false也将返回false。您需要在模型中设置id
,然后再发送保存请求,但如果我执行console.log($this.model.get(“id”)在成功回调中,我可以看到模型ID?好的,在将模型保存到数据库之前,请给我console.log。如果您的模型在保存之前有ID,主干网就不可能发送POST,因为model.isNew()会返回false,model.isNew()会返回什么为您返回?当我第一次保存isNew returns true时,当我编辑isNew returns false时。编辑后,如果我添加我认为是新组的内容,则isNew returns false也会返回false。