验证功能在骨干网中不起作用

时间:2013-06-24 23:02:05

标签: javascript validation backbone.js

我正在尝试在更改变量属性时记录错误,但永远不会触发验证,这是我的代码:

Person = Backbone.Model.extend({
        initialize: function() {
            console.log("hello world");
            this.bind('change:name', function() {
                console.log(this.get('name') + ' is now the value for the name');
            });
            this.bind('error', function(model, error) {
                console.log(error);
            });
        },
        defaults: {
            name: 'Bob Hope', 
            height: 'unknown'
        },
        validate: function(attributes) {
            if(attributes.name == 'blank'){
                return 'no';
            }
        }
    });


var person = new Person();
person.set({name: 'blank'});

我甚至试过这样的叫做套装:

person.set({name: 'blank'}, {validate: true});

但这也不起作用,我使用的是1.0.0版本。

1 个答案:

答案 0 :(得分:1)

根据the documentation

  

默认情况下,在保存之前调用validate,但也可以调用   在设置之前,如果传递了{validate:true}。

此外,触发的事件为invalid,而不是error,请尝试以下操作:

this.bind('invalid', function(model, error) {
    console.log(error);
});