2012-03-06 17 views
6

私はバックボーンのルーティング機能についていくつかの基本が欠けていると思います。バックボーンJSルーティングが期待通りに機能しない

私は、アプリケーションを構築することだし、それはそうのようなものになります。ブラウザは、アドレスバーにURLを変更します。この時点で

file: app.js

App = {} 
App.nav = new Backbone.Router; 
require('app/controller'); 

file: controller.js

App.nav.route('home', 'home', function() { 
    console.log("Home Activated"); 
}); 

App.navigate('home'); 

/homeしかし何も起こらず、Home Activatedコンソールメッセージが表示されません。

自分のルーティングクラス(すなわちBackbone.Router.extend({}))を使ってみましたが、まだ初期化する必要があるため、実際にポイントが表示されません。アプリ内で中央の履歴/ナビゲーションを使用したいすべてのモジュール/コントローラは、コントローラごとにルータを作成するのではなく、ルーティングを追加します。

私は間違っていますか?

答えて

15

http://documentcloud.github.com/backbone/#Router-navigate

ドキュメントから:

あなたはまた、ルート関数を呼び出すしたい場合は、trueにトリガオプションを設定します。

しかし、OlliMが書いたように、まず履歴を有効にする必要があります。

だからあなたの答えは次のようになります。

Backbone.history.start(); 
App.nav.navigate('home', {trigger: true}); 

編集: は、それは私に傷や心痛の世界を救ったとして、私はこのことを指摘したい「NAV」を入れて

+1

'{トリガー:真}を加える'ここではソリューションの一部ではありません。バックボーンはデフォルトでトリガーになります。オプションが指定されていない場合はtrueです。コードスニペットは次のとおりです。 'navigate:function(fragment、options){ if(!History.started)falseを返します。 if(!options || options === true)options = {trigger:!! options}; ' – Kinergy

+0

あなたのリンクは404です。 – NuclearPeon

1

を忘れてしまいました。

あなたは、このような

Backbone.router.navigate('/some/page'); // does not work 

としてカスタムページへのルーティングされ、それが機能していないと思われる場合。これは私のトラブルシューティングの数時間を要し末尾「/」

Backbone.router.navigate('/some/page/'); // works 

...

関連する問題