こんにちは、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('完了'));**