2011-07-29 4 views
1

javascriptとjQuery開発に十分な経験がないので、sammy.jsとHTMLテンプレートを使用する関数を作成する方法を教えてもらえるかどうか疑問に思っていました。sammy jsのルートに従ってhtmlファイルをロードするにはどうすればよいですか?

これは私が今持っている作業コードです:

<script> 
    ;(function($) { 

     var app = $.sammy(function() { 

     this.get('#/', function() { $('#content').text(''); }); 

     this.get('#/home', function() { $('#content').load('main.html'); }); 

     }); 

     $(function() { app.run() }); 

    })(jQuery); 

</script> 

このコードは、私がに行くときmain.htmlのコンテンツを置くか...html#/homeをクリックしてくださいしかし、私はちょうど割り出しjavascript関数を探していますURLの終点(..#/の後ろの単語)と同じ名前のhtmlページを取得します。 pseudo-code

if(somethingWasClicked and uses sammy.js) 
    loadContent(); 

function loadContent() { 
    endpoint = figureOutEndPoint(); 
    $('#content').load(endpoint.html); 
} 

あなたはそれでroute with a parameterを必要な支援

答えて

8

してくれてありがとう:

this.get('#/:page', function() { 
    $('#content').load(this.params['page'] + '.html'); 
}); 

それはあなたの他のルートの後ですか、それがために呼び出されますことを確認してくださいほぼすべて(例えば、あなたがすでに扱っている#/homeなど)。

あなたは、もちろん、ルートで他のパラメータを置くことができます。

this.get('#/:where/:is/:pancakes/:house', function() { 
    // Do things with this.params['where'], this.params['is'], 
    // this.params['pancakes'], and this.params['house']. 
}); 

は、あなただけが注文権利やルートがお互いに戦うことができ得ることを確認する必要があります。ルートは追加されたのと同じ順序でマッチしますので、より一般的なキャッチオールルートは通常下に移動します。

+0

ありがとう!それはそうです! – Kartik

+0

@Kartik:Sammy.jsで悪い時を過ごすことはできません。それは私の好きなJavaScriptライブラリの1つです:) –

+0

こんにちは、何らかの理由で、私が直接「... html /#info'に行くとき、info isntデフォルトのページ.. '#/ info'ページへのリンクを特にクリックしない限り、それはinfo.htmlをロードしていないようです。それは起こると思われますか? sammy.jsはこのリンクをサポートしていませんか? – Kartik

関連する問題