3

Router.navigateユーザーがリンクをクリックしたときにバックボーンでトリガーする優先的な方法はありますか?

たとえば、テンプレートにリンクがある場合があります<a href="/logout">Log Out</a>。カスタム クラスを使用し、クリック ハンドラーをビュー内のそのクラスにアタッチすることは、実際に推奨される方法ですか? これにより、大量の重複コードが生成されるように思われるため、より良い方法を探しています。

4

1 に答える 1

3

この種のことを処理する方法は、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()を呼び出します。

于 2012-06-19T21:21:02.137 に答える