【问题标题】:Backbone validation on existing tutorial现有教程的主干验证
【发布时间】:2013-10-16 14:47:14
【问题描述】:

我完成了 Thomas Davis 的以下教程,并决定在年龄字段中添加一些验证。我尝试如下编辑模型但没有成功:

var User = Backbone.Model.extend({
    validate: function(attr, error) {
        if(attr.age < 18) {
            console.log(error);
            return error;
        }
    },
    checkValidation: function(){
        if (validate) {
           console.log('validation successful');
        } else {
            urlRoot: '/users'
        }
    }
});

完整代码here

教程:https://www.youtube.com/watch?v=FZSjvWtUxYk

【问题讨论】:

  • 你能描述一下“没有成功”是什么意思吗?
  • 当然,我需要验证年龄输入字段(请参阅完整代码),并且我想 console.log 错误而不让表单转到:(urlRoot: '/users') 直到验证.
  • 我在考虑一个条件语句来检查验证是否成功,而不是重定向到'/users'

标签: javascript jquery backbone.js


【解决方案1】:

当您在模型上调用 set 或 save 时,您的 validate 方法将被自动调用,并且如果您返回任何内容,将阻止 save 方法继续,就像您一样。如果你想检查设置/保存之外的验证,你可以调用'this.isValid()'。

您的 checkValidation 方法有两个问题:

checkValidation: function(){
        if (validate) { //where is this validate variable coming from?
           console.log('validation successful');
        } else {
            urlRoot: '/users' //not doing anything, don't use : syntax outside of an object
        }
    }

如果你想要一个方法来做到这一点,试试这个:

checkValidation: function(){
        if (this.isValid()) {
           console.log('validation successful');
        } else {
            this.urlRoot = '/users' //must specify this, use =
        }
    }

无论哪种情况,我都会阅读 validate 方法:http://backbonejs.org/#Model-validate 或查看其工作原理的内部结构:http://backbonejs.org/docs/backbone.html#section-68

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多