0

我正在使用主干 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});

...我的模型无论如何都会更新。我怎样才能防止这种情况?

我知道有一个问题 open,但是有什么解决方法吗?还是我需要等待错误修复?

4

1 回答 1

3

问题是您的调用set使用属性名称Age(大写A)而不是age.

p.set("age", -20, {validate: true});

此外,当validate失败时,您应该返回undefined.

validate: function (attrs) {
    if (attrs.age < 0) {
        return "Be more positive!";
    }
}
于 2013-03-13T19:38:40.110 回答