我创建了一个对象:
var Person = Backbone.Model.extend({
defaults: {
'name': '',
'age': 0
},
initialize: function() {
this.on('error', function(model, error){
console.log(error);
});
},
validate: function(attributes){
if (attributes.name == '') {
return "How do we call him!?";
}
},
changeName: function(name) {
this.set({'name':name});
},
getOlder: function() {
this.set({'age': this.get('age') +1});
}
});
我创建了一个 Person 实例并在名称上填了一个空白,但从未收到错误消息。但是当我在已经创建的实例上设置一个空白名称时,它触发了验证。
var teejay = new Person;
teejay.changeName('');
=> How do we call him!?
teejay.get('name');
=> ""
从我从主干源代码中看到的,我看到
this.set(attributes, {silent: true});
假设仅在更改或设置属性时才进行验证是否正确?