新しいバックボーンバージョン0.9.9にアップデートした後、新しいモデルを作成したいときに、常に検証関数に入るという問題があります。たとえば、デフォルトで「title」を設定し、「title」:「」を設定し、validateで長さがあるかどうかを確認します。起動時に検証機能が実行されると、常にエラーが発生します。
何ができますか?
新しいバックボーンバージョン0.9.9にアップデートした後、新しいモデルを作成したいときに、常に検証関数に入るという問題があります。たとえば、デフォルトで「title」を設定し、「title」:「」を設定し、validateで長さがあるかどうかを確認します。起動時に検証機能が実行されると、常にエラーが発生します。
何ができますか?
検証メソッドで空のタイトルを許可するか、常に値を使用してモデルをインスタンス化できます。たとえば、次のようになります。new Model({ title: 'my title' })
最悪のシナリオでは、モデルがフェッチされているかどうかを確認できます。例:
validate: function( attrs ) {
if( this.fetched ) {
if( !attrs.title.length ) { return "error!"; }
}
}
次に、this.fetched
すべての情報を取得してモデルを正しく構築したら、true に設定するだけです。
しかし、実際には、defaults
値は最初から有効な形式でなければなりません。
コメントの議論の後に編集おそらく検証を許可するかどうかの機能を
チェックすることもできます。例えば:hasChanged
Backbone.model
validate: function( attrs ) {
if( this.hasChanged() ) {
if( !attrs.title.length ) { return "error!"; }
}
}
set
このようにして、初期化時の検証をスキップし、新しい値を入力したときにのみ検証します。