0

验证工作正常,但有些不对劲:

var User = Backbone.Model.extend({
validate: function(attr, options){
    var errors = [];
    if(attr.age < 18){
        errors.push('too young');
    }
    if(attr.firstname === ''){
        errors.push('name required');
    }
    if(errors.length === 0){}
    else{
        return errors;
    }
},
urlRoot: '/users'
});

如果我删除以下内容:“if(errors.length === 0){}”,即使验证是正确的(在这种情况下不应调用无效),“user.save doesn't”不会似乎工作:

saveUser: function (ev){
    var userDeatils = $(ev.currentTarget).serializeObject();
    var user = new User({validate:true});
    user.on("invalid", function(model, error) {
        if(error[0]){
            errorAge(error[0]);
        }
        if(error[1]){
            inputRequired(error[1]);
        }
    });
    user.save(userDeatils,{
        success: function(user){
            router.navigate('', {trigger:true});
        }
    })
    return false;
},

完整代码在这里(仅用于显示代码)

4

1 回答 1

1

我建议遵循这种模式https://gist.github.com/addyosmani/3516103

你的例子是错误的,因为名字可以有 0 或 1 索引,如果它有 0 索引,你会在名字错误的文本中显示年龄错误:)

于 2013-10-17T15:39:19.703 回答