バックボーンで、URL を変更せずにルート イベント ハンドラーをトリガーする方法はありますか?
つまり、ルート ハンドラーをトリガーしたいのですが、URL を変更したくないということです。したがって、私は使いたくない
router.navigate(route, {trigger: true});
これにより、URL が変更されます。
バックボーンで、URL を変更せずにルート イベント ハンドラーをトリガーする方法はありますか?
つまり、ルート ハンドラーをトリガーしたいのですが、URL を変更したくないということです。したがって、私は使いたくない
router.navigate(route, {trigger: true});
これにより、URL が変更されます。
ルーター自体は機能に接続されています。簡単な答えは、単にルート処理をバイパスして、関数をすぐに呼び出すことです。
(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 つです。
マリオネットのルーティングについては、ここで詳しく説明されています: http://samples.leanpub.com/marionette-gentle-introduction-sample.pdf
ここで説明する戦略は、URL 管理をアプリケーションの反応から分離することです (サブアプリケーションの切り替えなど)。これは、URl フラグメントを変更せずに、(Marionette イベントを使用して) アプリで自由にハンドラーをトリガーできることを意味します。
試しましたBackbone.history.loadUrl(route);
か?