2011-07-05 15 views

答えて

5

私は質問を理解していれば、あなたはURLの一部として、検索語が含まれる任意のURLをしたいです。そして、私はあなたの問題がroutesアーキテクチャでそれを行う方法を見ていないと思う。

ルートは正規表現に過ぎない。その後

var MyController = Backbone.Controller.extend({ 
    routes: { 
     RegExp('^search/(.*)$'): "handle_search" 
    }, 

    handle_search: function(search_term) { 
     search_term = decodeURIComponent(search_term); 
     /* Do something ajaxy with the search term in the search model, 
      which in turn triggers the search view to refresh... */ 
    } 
}); 

、あなたは(検索フィールド自体にまたは多分keypress==13マネージャー)検索フォーム上のボタンにclickハンドラを適用することはなく、実際に何かをして、ちょうどセットするwindow.location.hash = escapeURIComponent($('#search_field').val())

それはラウンドアバウトですが、それは仕事を完了します。あなたのURLはすべて%XXのもので醜いですが、それらはすべてブックマーク可能です。これがこのようなことを行う唯一の理由です。

+0

ありがとうございます!悪い説明をして申し訳ありません。それはだった: 'window.location.hash = escapeURIComponent($( '#search_field')。val())'私が探していた:)しかし、もし私が2つ以上の選択メニューを持っていて、同じ方法? – Emil

+0

私はその質問にはっきりしていません。 * anything *をルートにすることができ、その代わりに、encode/decodeURIComponentのペアで何かをルーティングすることができます。ここで何を達成しようとしていますか? –

1

エミール私は、ユーザーが選択して検索をトリガできるような同様のユースケースがあると思います。アドレスバーにその検索を更新してブックマークすることができます。アドレスバーを更新するには、私は使用を計画していましたBackbone navigate

複数の検索語については、私はそれらをコレクションの値として設定してからコレクションのフェッチをトリガーします。2.コレクションにURLとnavigateを使用してアドレスバーを更新します。