javascript – Backbone.js – 在model.validate失败时阻止PUT / POST

以下面的例子为例:

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});

应该记录错误并在发布到服务器之前停止.

点赞