0

当变量的属性发生更改时,我试图记录一个错误,但验证从未被触发,这是我的代码:

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'});

我什至试过这样调用 set:

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

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

4

1 回答 1

1

根据文档

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

此外,触发的事件是invalid,不是error,所以试试这个:

this.bind('invalid', function(model, error) {
    console.log(error);
});
于 2013-06-24T23:11:42.073 回答