javascript - Backbone 模型验证

标签 javascript validation backbone.js backbone-model

我正在关注这些https://tutsplus.com/course/connected-to-the-backbone/学习 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

但它从未验证,即值-100仍被分配给rollNo。另外,当我执行 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})

您可以阅读validate对于Backbone.Model

作为旁注: 该教程似乎适用于 Backbone 0.9.2,而当前版本是 1.1.0。考虑查找最新的教程,或阅读 Change Log .

关于javascript - Backbone 模型验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464502/

相关文章:

android - 如何使用 ViewModel 和 Databinding 实现验证?

javascript - jQuery 表单验证插件 : Return false on error

javascript - 主干集合长度为0

javascript - Backbone - 在 ItemView 之外访问 View 的 $el.attr

javascript - 使一个元素闪烁并在单击其他元素时停止它

javascript - Jquery更改功能不起作用

javascript - 行选择 JavaScript 回调上的 Primefaces 数据表

python - PyTorch:为什么在训练时期循环内部或外部调用它后验证准确性会发生变化?

javascript - Hammer Js 无法与 Backbone.js 一起使用

javascript - 使用 javaScriptSupport.addInitializerCall 调用 fnStandingRedraw 以保留数据表中的当前分页设置