以下面的例子为例:
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();
在这种情况下,验证方法也不会被调用:
var kase = new Case({subject: null});
kase.save();
在这种情况下,验证方法会被调用,但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请求的内容?或者我应该在点击保存方法之前检查有效的模型? (想想一分钱可能刚刚下降).
任何指导都将非常感激.
最佳答案 失败的集合不会更新模型数据,而没有参数的保存调用会将模型的当前状态发布/放入服务器(在您的情况下为空).另一方面,如果使用要验证的数据调用save方法,则在验证失败时将停止:
var kase = new Case();
kase.save({subject:null});
应该记录错误并在发布到服务器之前停止.