骨干模型中的验证

Validation in Backbone Models

本文关键字:验证 模型      更新时间:2024-05-02

我正在遵循这些https://tutsplus.com/course/connected-to-the-backbone/讲座学习主干,我知道每当我们设置模型内任何变量的值时,都会调用validate()函数(如果存在)。我写了这个模型:

var PersonModel = Backbone.Model.extend({
    defaults: {
        name: 'Kamran Ahmed',
        rollNo: '1224',
        email: 'kamranahmed.se@gmail.com'
    },
    validate: function (attrs){
        if ( !attrs.name ) {
            return 'You must provide a name';
        }
        if ( attrs.rollNo < 0) {
            return 'Roll Number must be positive';
        }
    }
});

我正在尝试以下内容:

var person = new PersonModel();
person.set('rollNo', -100) // trying to violate the validation rule

但是它从不验证,即值CCD_ 2仍然被分配给CCD_。此外,当我执行person.set('rollNo', -100)时,它会不断返回整个对象,而当违反验证规则时,它应该返回false。我在这里做错了什么?为什么没有进行验证?

来自文档:

 By default validate is called before save, but can also be called before set if 
 {validate:true} is passed. 

所以你需要像这样使用它:

person.set({'rollNo':-100},{validate:true})

您可以阅读Backbone.Model的验证信息。

附带说明:教程似乎是针对Backbone 0.9.2的,而当前版本是1.1.0。请考虑查找最新的教程,或阅读更改日志。