骨干模型验证不会拒绝无效值

时间:2014-03-26 12:50:19

标签: backbone.js

为什么这个简单的例子不起作用:

var Person = Backbone.Model.extend({
    defaults: {
      title: 0  
    },

    validate: function(atts, options){
        if(atts.title < 0) {
            return console.log('tekst');
        }
    }

});

var person1 = new Person();
person1.on('invalid',function(model,error){
    alert(model.get('title') +error );
});

当我使用person1.set({title: -1},{validate: true})设置不正确的值时,控制台会返回错误消息,但模型仍会更改为-1。

1 个答案:

答案 0 :(得分:1)

来自文档:

  

如果属性有效,请不要从validate返回任何内容;如果   它们无效,返回您选择的错误。它可以是   简单作为要显示的字符串错误消息,或完整错误   以编程方式描述错误的对象。

您需要返回,而不仅仅是返回语句。试试这个:

validate: function(atts, options){
    if(atts.title < 0) {
        return "can't be negative!";
    }
}