Backbone 0.9.10中验证错误的解决方法

时间:2013-03-13 19:11:10

标签: javascript backbone.js

我正在使用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,但有没有解决方法?或者我需要等待修正错误吗?

1 个答案:

答案 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!";
    }
}