以下面的例子为例:
var Case = Backbone.Model.extend({
initialize: function(){
this.bind("error", function(model, error){
console.log(error)
});
},
url: function() {
return '/api/kase?id=' + this.get("id");
},
validate: function(attrs) {
return "An error";
}
});
在这种情况下,不会调用validate方法:
var kase = new Case();
kase.save();
在这种情况下,不会调用validate方法:
var kase = new Case({subject: null});
kase.save();
在这种情况下,确实调用了validate方法,但仍然在保存时发出了POST请求:
var kase = new Case();
kase.set("subject",null);
// An error
kase.save();
// POST http://localhost.local/api/kase?id=undefined 404 (Not Found)
这是预期的行为吗?当客户端验证失败时,我是否遗漏了关于“取消”POST / PUT请求的内容?或者我应该在点击保存方法之前检查有效的模型? (想想一分钱可能刚刚下降)。
任何指导都将非常感谢。
答案 0 :(得分:2)
失败的集合不会更新模型数据,而没有参数的保存调用会将模型的当前状态发布/放入服务器(在您的情况下为空)。另一方面,如果使用要验证的数据调用save方法,则在验证失败时它将停止:
var kase = new Case();
kase.save({subject:null});
应该记录错误并在发布到服务器之前停止。
答案 1 :(得分:0)
您是否在其他地方有代码在模型上调用save
?
Backbone在设置模型属性时不会调用服务器;即使验证失败。