こんにちは、backbonejs を初めて使用します。
http://addyosmani.github.com/backbone-fundamentals/#validationの例を試しているときに問題が発生しました
モデルの 2 つのオブジェクト myTodo と myTodo1 を作成しました。
このようにset関数を呼び出すと、検証エラーのためにcompleted:falseが返されます
var myTodo = new Todo();
myTodo.set('完了', true, {validate: true});
console.log("完了: "+myTodo.get('完了'));
/*
上記のコードは、次のログを返します。
このモデルは初期化されました。
Todo のタイトルを設定することを忘れないでください。
完了: false
*/
以下のコードの実行時に検証が実行されない理由を購入する
var myTodo1 = new Todo();
myTodo1.set('完了',true);
console.log("完了: "+myTodo1.get('完了'));
myTodo1.set({validate:true})
console.log("完了: "+myTodo1.get('完了'));
/*
上記のコードは、次のログを返します。
このモデルは初期化されました。アンダースコア-test2.js:11
完了: true underscore-test2.js:28
完了: 真
*/
両方のコードセットが同じ仕事をしていますが、最初のケースでは検証が実行されますが、2番目のケースでは実行されません
どうして?????
以下は完全なサンプルコードです。
var Todo = Backbone.Model.extend({
デフォルト: {
完了: false,
}、
検証: 関数 (属性) {
if(attribs.title === undefined){
return "ToDo のタイトルを忘れずに設定してください。";
}
}、
初期化: 関数(){
console.log('このモデルは初期化されました。');
this.on("無効", 関数(モデル, エラー){
console.log(エラー);
});
this.on('change:title', function(){
console.log('- タイトルの値が変更されました。');
});
}
});
**var myTodo = new Todo();
myTodo.set('完了', true, {validate: true});
console.log("完了: "+myTodo.get('完了'));**
**var myTodo1 = new Todo();
myTodo1.set('完了',true);
console.log("完了: "+myTodo1.get('完了'));
myTodo1.set({validate:true})
console.log("完了: "+myTodo1.get('完了'));**