2017-04-13 1 views
-1

isValid()を私のバックボーンモデルに呼び出すと、検証規則が満たされていても常にundefinedが返されます。ここで何がうまくいかないのでしょうか?model.isValidは常に未定義を返します

ここで何が問題になる可能性があり、どうすれば修正できますか?

マイモデル:

Backbone.Model.extend({ 

    validation: { 

      firstname: { required: true, msg: _('First Name is required').translate() } 
     , lastname: { required: true, msg: _('Last Name is required').translate() } 
    } 
}); 

マイビュー:

Backbone.View.extend({ 

     events: { 
      'submit form[data-action="specify-pbt"]': 'specifyPBT' 
     } 

    , bindings: { 
      '[name="firstname"]': 'firstname' 
     , '[name="lastname"]': 'lastname' 
     } 

    , initialize: function(options) { 
      this.model = options.model || new PBTSpecifyModel(); // The latter condition is always met 

      BackboneCompositeView.add(this); 
      BackboneFormView.add(this); 
      Backbone.Validation.bind(this); 
     } 

    , specifyPBT: function (e) 
     { 
      var options = jQuery(e.target).serializeObject(); 

      console.log("model: "); 
      console.log(this.model); // Outputs the model: looks all correct 
      console.log("isValid: "); 
      console.log(this.model.isValid()); // Outputs undefined 
      console.log("validationError: "); 
      console.log(this.model.validationError); // Outputs null 
     } 

    , getContext: function() 
     { 
      return { 

      } 
     } 
    }) 
}); 
+0

メソッドを使用するisValid(true) –

+0

他の質問をしたことがありますか?答えのいずれかがあなたを助けた場合、あなたはアップフォートしたり、受け入れたりすることができます。答えが足りない場合は、自分の答えを書いて受け入れることをお勧めします。 –

答えて

0

質問をする前に、ドキュメントを読んでください。

isValidmodel.isValid()
実行は、モデルの状態を確認するために検証します。

validatemodel.validate(attributes, options)
この方法は 未定義を残している、あなたは、あなたがプラグインを使用している任意のカスタム 検証ロジック

でそれをしませ上書きすることを奨励していますバックボーン自体の検証方法。検証の状態を確認する方法については、プラグインの指示に従ってください。

0

Backbone.Validationには、そのバージョンのisValidのドキュメントエントリがあり、デフォルトのバックボーンとは異なります。

属性、属性の配列、または モデル全体が有効かどうかを確認してください。いかなる検証が発生していないと モデルが真または偽、そうでない場合、(検証がコンストラクタから 呼ばれるバックボーンv0.9.9を除いて)検証を有する

isValid戻るundefined

引数を渡さないと、属性バインドオプション によって定義されたプロパティが検証されます。属性オプションが でない場合、検証は行われません。

var isValid = model.isValid(); 

あなたが引数としてtrueを渡す場合は、結果が返される前に、この が検証を強制します:

var isValid = model.isValid(true); 

をあなたは 属性の名前または名前の配列を渡す場合は、あなたを 属性が有効であるかどうかを確認することができます。

// Check if name is valid 
var isValid = model.isValid('name'); 

// Check if name and age are valid 
var isValid = model.isValid(['name', 'age']); 

default isValid of a Backbone Modelは常にブール値を返します。

関連する問題