Router.navigate
ユーザーがリンクをクリックしたときにバックボーンでトリガーする優先的な方法はありますか?
たとえば、テンプレートにリンクがある場合があります<a href="/logout">Log Out</a>
。カスタム クラスを使用し、クリック ハンドラーをビュー内のそのクラスにアタッチすることは、実際に推奨される方法ですか? これにより、大量の重複コードが生成されるように思われるため、より良い方法を探しています。
Router.navigate
ユーザーがリンクをクリックしたときにバックボーンでトリガーする優先的な方法はありますか?
たとえば、テンプレートにリンクがある場合があります<a href="/logout">Log Out</a>
。カスタム クラスを使用し、クリック ハンドラーをビュー内のそのクラスにアタッチすることは、実際に推奨される方法ですか? これにより、大量の重複コードが生成されるように思われるため、より良い方法を探しています。
この種のことを処理する方法は、Backbone オブジェクト (この場合はビュー) を拡張することです。バックボーンのドキュメントで、これが奨励されており、最小限のコード ベースを考えると必要であることがわかります。バックボーン コアを拡張する良い方法については、 Marionette (Github で) とサイトのバックボーン パターンをチェックすることをお勧めします。
たとえば、ナビゲーション ハンドラを必要に応じて接続するメソッドを使用してViewを拡張するとします。
Backbone.View.prototype.wireupNavs = function() {
var that = this;
this.$el.find("a[role=nav]").each(function() {
var target = $(this).attr('href');
that.bind("click", router.navigate(target);
});
}
次に、バックボーン nav 要素として必要なタグを、 role="nav"属性で装飾するだけです。適切なビューの初期化関数でthis.wireupNavs()を呼び出します。