オブジェクトを作成しました:
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});
属性が変更または設定されたときにのみ検証が行われると想定するのは正しいですか?