Backbone.js model.save不更新模型值
我正在努力学习Backbone.js,但遇到了一个问题。model.save不会更新我的模型值,尽管model.fetch会更新该值 请查看下面的代码,如果我在这里做错了什么,请告诉我: 型号Backbone.js model.save不更新模型值,backbone.js,Backbone.js,我正在努力学习Backbone.js,但遇到了一个问题。model.save不会更新我的模型值,尽管model.fetch会更新该值 请查看下面的代码,如果我在这里做错了什么,请告诉我: 型号 var Person = Backbone.Model.extend({ url: "CreatePerson", defaults: { name: "", age: 0 }, initialize: function(){ this.on("
var Person = Backbone.Model.extend({
url: "CreatePerson",
defaults: {
name: "",
age: 0
},
initialize: function(){
this.on("change:name",function(){
alert("Updated value is: "+this.get("name"));
});
}
});
我正在html页面上创建此模型的实例,下面是代码:
var person = new Person({name:"manish"});
person.save(person,{
wait: true,
success: function(){
alert("Data saved: "+person.toJSON().name);
},
error: function(){
alert("Sorry, something wrong went with the system");
}
});
person.fetch({
success: function(){
alert("Data Fetched: "+person.get("name"));
}
});
在save和fetch上,我从服务器返回以下JSON数据:
{"name":"Logan","age":23}
有趣的是,对于save,不触发change事件,警报框给我旧的模型值(即manish),而当fetch函数执行时,触发change事件,fetch回调给我新的值(即logan)
有人能帮我找出我做错了什么吗?来自backbonejs.org
使用新属性调用save将导致“更改”事件
立即启动,并在服务器确认
成功的改变。如果您想等待消息,请传递{wait:true}
在模型上设置新属性之前,请单击服务器
听起来服务器还没有返回它已经完成的消息。删除wait:true将触发已更改的事件。代码中有错误:
person.save(person,{
您应该为save调用或选项提供属性对象,而不是模型本身。移除
人员,
并检查其是否有效<代码>等待:应设置true,以确保更改为服务器验证的正确数据。不确定是否需要,但服务器是否为保存(POST
)请求返回状态代码201
(已创建)?返回200,表示操作成功。确定。我将尝试删除wait=true,尽管请求已完成。我已经在Mozilla中使用firebug进行了调试,并确认请求已完成。我需要显式地将新值分配给模型吗?老实说,我从未在model.save上使用wait:true属性,我假设您可能需要重新轮询服务器或其他什么?我知道,如果不等待:true,成功(模型,响应)回调中的数据应该是保存的数据。在我的成功回调中,我没有传递模型或响应。这可能是原因吗?可能是,尽管我认为主干网为方法提供了对象,而不管它们是否在函数参数中指定。如果在服务器端进行验证,并且在等待服务器响应之前使用不正确的数据更新视图,则实际上是有意义的。如果我想更改模型的所有属性,那么我应该传递所有属性还是传递模型本身呢?默认情况下,服务器总是获取整个主干模型,但save调用只需要必须更改的属性(或者不需要,如果模型已经包含model.set或类似的更改的属性,则模型是新的,所以只需要调用save而不需要属性)