2011-11-21 9 views
8

クロームアプリを使用するには、クライアント側のルーティングソリューションが必要です。私はいくつかの研究をしており、crossroads.jsのように見えます。私はそれを私のhtmlファイルに含めると、うまくいかないようです。私はクライアント側ルーティング。どのように機能するのですか?

crossroads.addRoute('/news/{id}', function(id){ 
    alert(id); 
}); 
crossroads.parse('/news/123'); 

のようなコードを使用する場合には、あるページの警告「123」が、私は、ブラウザのURLバーに「/ニュース/ 321」を入力した場合、それは代わりに「321に警告する、ブラウザのデフォルトのアクションをプリフォーム'私は間違って何をしています。 (また、タイトルが広いと分かっていますが、クロスロードでは難しかったと思っています.jsはクロスロードよりも一般的です.js)。

+0

あなたは/ニュース/ 123に行くとき、それはに移動しません本当のペ​​ージ?またはそれはajaxのアンカータグの一部ですか? – topherg

+0

@cgoddard Chromeを使用していて、「/ニュース/ 123」のGoogle検索をドメイン – danwoods

+0

としています... – topherg

答えて

8

ハッシャーを使用する同じ著者)でも。

Crossroadsページのドキュメントには、Hasherを使用する必要があることが示されています(これはwidow.locationバーの監視に使用されるためです)。

また、Hasherを使用して初期化する必要がある場合は、「交差点」ルートをHasherに追加して、特定のルートの監視を開始することもできます。

//setup crossroads 
crossroads.addRoute('foo'); 
crossroads.addRoute('lorem/ipsum'); 
crossroads.routed.add(console.log, console); //log all routes 

//setup hasher 
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash 
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes 
hasher.init(); //start listening for history change 

//update URL fragment generating new history record 
hasher.setHash('lorem/ipsum'); 

http://millermedeiros.github.com/crossroads.js/

+0

私はハッサーがOPに何かを使っているとは思わない。 – ericosg

+0

https://github.com/millermedeiros/crossroads.js/issues/47 prototype.applyのハックアウトは、間違ったタイプの – roo2

6

コマンドparseは、文字列を見ているし、それに基づいてアクションを実行するために交差点に指示します。

crossroads.parse('/news/123');の場合、常に/news/123が使用されます。

あなたが交差点をブラウザのアドレスバーに持っているものに解析したいので、あなたはparseメソッドでその値を使用する必要があります:

crossroads.parse(document.location.pathname); 
+4

です。代わりに、クエリ文字列を含めるために、 'crossroads.parse(document.location.pathname + document.location .search) ' – casey

関連する問題