モデルからビューを直接参照しないでください。これは、Model/View/* 設計の核となる信条に対する完全に根本的な違反です。呼び出しset
て検証が失敗すると、モデルはerror
(Backbone 0.9.9 以降) イベントを発行し、ビューはそれをリッスンし、それに応じてビューを更新して応答します。代わりにコールバックを渡しset
てエラーを処理することもできますが、ほとんどの状況ではイベントの方が適しています。モデルは から実際にエラー オブジェクトを返す必要があることに注意してください。validate
これはデータの更新を拒否するため、ユーザーが入力を修正してblur
発生した後、データは実際に変更されます。validate
コードをそのまま使用すると、エラーが返されないため、Backbone は呼び出しが成功したと見なします。
ビューでは、モデルのエラー オブジェクトを UI 警告に変換する方法を示す擬似コードを次に示します。
initialize: function () {
_.bindAll(this);
this.model.on('error', this.showError);
},
showError: function (error) {
if (error.businessNumber) {
this.$businessNumber.addClass('error');
}
}
補足として、フォームにバックボーンを使用する方法について混乱することを気にしないでください。そのままでは無効なデータを受け入れないという事実set
は、大きな障害であり、直感的ではありません。フォームと検証の両方に役立つプラグインがあります (https://github.com/documentcloud/backbone/wiki/Extensions,-Plugins,-Resources)。背骨。