2

バックボーンで、URL を変更せずにルート イベント ハンドラーをトリガーする方法はありますか?

つまり、ルート ハンドラーをトリガーしたいのですが、URL を変更したくないということです。したがって、私は使いたくない

router.navigate(route, {trigger: true});

これにより、URL が変更されます。

4

3 に答える 3

2

ルーター自体は機能に接続されています。簡単な答えは、単にルート処理をバイパスして、関数をすぐに呼び出すことです。

(function( $, Backbone ) {
    var exports = window.app = window.app || {},
        Router = Backbone.Router.extend({
            // Here you declare what the routes are in your router
            // and what functionality they should trigger.
            routes: {
                "help"                : "help",
                "search/:query"       : "search",
                "search/:query/p:page": "search"
            },

            // Declare route functions.
            help  : function() {},
            search: function( query, page ) {}
        });

    // Export the router.
    exports.router = new Router();

    // Just a dummy object for calling the router.
    var cookieMonster = {
        init: function() {
            // Do something on init.

            // End with calling the route help function.
            exports.router.help();
        }
    };
}(jQuery, Backbone));

cookieMonster.init()この場合help、ルーター内の関数の呼び出しで終了します。

ヒントは、ルートから分離された関数ロジックを持つコントローラーがあるバックボーン マリオネットを調べることです。これは、マリオネットを素晴らしいものにする多くのことの 1 つです。

于 2013-03-12T14:35:36.663 に答える
1

マリオネットのルーティングについては、ここで詳しく説明されています: http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf

ここで説明する戦略は、URL 管理をアプリケーションの反応から分離することです (サブアプリケーションの切り替えなど)。これは、URl フラグメントを変更せずに、(Marionette イベントを使用して) アプリで自由にハンドラーをトリガーできることを意味します。

于 2013-06-04T12:52:47.577 に答える
0

試しましたBackbone.history.loadUrl(route);か?

于 2014-01-07T16:21:32.343 に答える