骨干:在创建时处理服务器响应
问题描述:
我有一个处理表单的视图。
这种形式有上点击触发了保存按钮的事件:骨干:在创建时处理服务器响应
var FormView = Backbone.View.extend({
initialize : function(options){
this.collection = new PlayerCollection({url:options.url});
this.collection.bind('add', this.addPlayer);
this.collection.bind('reset', this.addAllPlayers);
},
saveNewPlayer : function(event){
this.collection.create({
name : this.$form.find('input[name="name"]').val(),
});
}
});
(我中省略不需要在这个例子中的一些代码)。
该代码正确保存新模型,将数据发送到服务器并创建与此新模型关联的视图。 但我想知道如何处理服务器响应时,数据发布到它。
例如,如果服务器无法保存数据或发现其他类型的错误,我该如何处理?
我是新来的主干,我从现在开始使用jQuery来编写我的应用程序,所以我习惯于使用success
和error
回调$.ajax
优惠。
答
骨干提供了类似的回调,添加第二个选项哈希的创建(和读取和保存)命令,就像这样:
this.collection.create({
name : this.$form.find('input[name="name"]').val(),
},{
error : function(model, response){},
success: function(model, response){}
});
这可能是值得加入到这个答案,你的服务器上你想要什么要做的是以200以外的http状态进行响应。这就是Backbone知道如何执行错误回调。因此,获取dataIn,验证它,授权它,运行一个事务(并且可能出错)等等,你以适当的状态回复(400,500等)。你可以从服务器返回任何你想要的东西(比如错误对象和有关错误的信息),并且可以通过响应参数访问它。 – jmk2142 2012-08-09 19:41:54
好评!一个很好的例子就是在表单验证中使用400-错误,并将服务器发送的验证错误发送给主干中的表单处理代码。 – 2012-08-09 20:11:49
这是在哪里记录?我无法在http://backbonejs.org/#Collection-create – 2012-08-09 20:34:11