我正在使用Backbone 0.9.10。
var Person = Backbone.Model.extend({
defaults: {
name: "John Doe",
age: 30
},
validate: function (attrs) {
if (attrs.age < 0) {
console.log("Age must be positive, idiot!");
};
}
});
如果我在控制台上这样做......
var p = new Person;
p.set("age", -20, {validate: true});
......无论如何我的模型都会更新。我该如何防止这种情况?
我知道there's an issue open,但有没有解决方法?或者我需要等待修正错误吗?
答案 0 :(得分:3)
问题是,您对set
的调用使用的是属性名称Age
(使用大写A
)而不是age
。
p.set("age", -20, {validate: true});
此外,当validate
失败时,您应该返回undefined
以外的其他内容。
validate: function (attrs) {
if (attrs.age < 0) {
return "Be more positive!";
}
}