参考backbone.js中文文档和backbone.js入门教程pdf都有类似的一段关于Backbone.Model validate方法的案例,发现这段代码并未执行validate方法,如下:
通过进一步学习和验证发现,应当绑定的是invalid事件而不是error事件,并且得使用save方法,这样才能触发validate方法,正确案例如下:
var Chapter = Backbone.Model.extend({validate: function(attrs) {
if (attrs.end < attrs.start) {return "can't end before it starts";}}
});var one = new Chapter({title : "Chapter One: The Beginning"
});one.bind("invalid", function(model, error) {
alert(model.get("title") + " " + error);
});one.set({start: 15,end: 10
});
one.save();
以上demo结果