0

我完成了 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'
        }
    }
});

完整代码在这里

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

4

1 回答 1

0

当您在模型上调用 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

于 2013-10-16T15:32:19.880 回答