2012-12-06 6 views
5

私のアプリは基本的にフォーム入力を受け取り、一連の結果を返します。クエリは任意の文字が含まれている場合、私は、彼らはURLと私のルート休憩に追加され、/(具体的には全くこの場合には発生する可能性があります)二つの経路クエリがルートに渡されたときのbackbone.jsのルーティング/

routes: { 
     '': 'search', 
     'search': 'search', 
     'results/:query': 'results' 
    }, 
    results: function(query) { 
     var search = new ResultsSearchView(); 
     var grid = new GridView({ query: query }); 
    } 

を持っています。

私は使用しようとしましたencodeURI()encodeURIComponent()ビット私は運がないです。あなたはどうやってそのようなことを処理していますか?

答えて

4

URLを構築する際にあなたが戻ってそれらを変換するためにルートハンドラ内/decodeURIComponent、その後%2Fにとを変換するencodeURIComponentを使用することができます。ルータで

<a href="#results/pancakes">no slash</a> 
<a href="#results/where%2Fis%2Fpancakes%2Fhouse">with slashes</a> 

、その後:

routes: { 
    'results/:query': 'results' 
}, 
results: function(query) { 
    query = decodeURIComponent(query); 
    // Do useful things here... 
} 

デモ:HTMLは次のように見て終わるだろう

ルート:またhttp://jsfiddle.net/ambiguous/sbpfD/

、あなたはsplat routeを使用することができますパラメータ部分、:paramを含むことができます。これは、1つのURLコンポーネントと一致しますen slashes;任意の数のURLコンポーネントに一致するスプラット部分*splatがあります。

だからあなたのHTMLは次のようになります:

<a href="#results/pancakes">no slash</a> 
<a href="#results/where/is/pancakes/house">with slashes</a> 

とルーター:

routes: { 
    'results/*query': 'results' 
}, 
results: function(query) { 
    // Do useful things here... 
} 

デモ:http://jsfiddle.net/ambiguous/awJxG/

+0

は、スプラットのルートを使用し、それは素晴らしい取り組んでいます。お手伝いありがとう。 – Charles

関連する問題