Book = Backbone.Model.extend({
initialize: function(){
//検出エラーが生じた場合イベントが生成される。invalidイベントハンドラを追加すると検証エラーをフィードバックとして提供できるようになる
this.on('invalid',function(model,error){
console.log('**Validation Error:' + error + "**");
});
},
defaults: {
name:'Book Title',
author : 'No One'
},
printDetails:function(){
//something
},
validate: function(attrs){
if(attrs.year < 2000){
return 'Year must be after 2000';
}
if(!attrs.name){
return 'A name must be provided';
}
}
});
var thisBook = new Book();
//2000年よりも前の年を設定
thisBook.set('year',1999,{validate:true});
console.log('Check year change' + thisBook.get('year'));
//モデルから名前を削除
thisBook.unset('name',{validata:true});
console.log('Check if name was removed:' + thisBook.get('name'));
//validフラグを指定しない場合,setメソッドの呼び出し時にvalidate関数は実行されない。
//ただしisValidメソッドを利用すれば、モデルが有効な状態かをいつでもチェックできる
//モデルが有効かどうかをチェック
console.log('Is model valid:' + thisBook.isValid());
// validate フラグを指定しない状態でルール違反
thisBook.set('year',1990);
//モデルが有効かどうかをチェック
console.log('Is model valid:' + thisBook.isValid());
[/javascript]