1

新しいバックボーンバージョン0.9.9にアップデートした後、新しいモデルを作成したいときに、常に検証関数に入るという問題があります。たとえば、デフォルトで「title」を設定し、「title」:「」を設定し、validateで長さがあるかどうかを確認します。起動時に検証機能が実行されると、常にエラーが発生します。

何ができますか?

4

1 に答える 1

1

検証メソッドで空のタイトルを許可するか、常に値を使用してモデルをインスタンス化できます。たとえば、次のようになります。new Model({ title: 'my title' })

最悪のシナリオでは、モデルがフェッチされているかどうかを確認できます。例:

validate: function( attrs ) {
  if( this.fetched ) {
    if( !attrs.title.length ) { return "error!"; }
  }
}

次に、this.fetchedすべての情報を取得してモデルを正しく構築したら、true に設定するだけです。

しかし、実際には、defaults値は最初から有効な形式でなければなりません。

コメントの議論の後に編集おそらく検証を許可するかどうかの機能を
チェックすることもできます。例えば:hasChangedBackbone.model

validate: function( attrs ) {
  if( this.hasChanged() ) {
    if( !attrs.title.length ) { return "error!"; }
  }
}

setこのようにして、初期化時の検証をスキップし、新しい値を入力したときにのみ検証します。

于 2012-12-17T20:06:12.007 に答える