1

これは些細なことに思えるかもしれませんが、検索を実行し、検索語を含むハッシュでブラウザの履歴を更新するアプリケーションがあります。

routes: {
"": "search",
"search/:query": "searchSetup"
},

ハッシュタグについて私が理解していることから、有効なハッシュタグにはスペースを含めないでください。ユーザーがビデオゲームなどを検索する場合、誰もがこれをどのように処理しますか。上記の用語を検索すると、ナビゲートイベントが2回発生するようです 私の正規表現は現在ひどいものです。

    RT.App.searchRouter = Backbone.Router.extend({
    initialize: function() {
        RT.App.vent.on("change:hash", function(searchTerm) {
            console.log("chnaging hash")
            this.navigate('search/'+searchTerm);
        }, this);
    },
    routes: {
        "": "search",
        "search/:query": "searchSetup"
    },
    createView: function () {
        //has view already been instatiated?
        if(!$("#forms-demo").length) {
            new RT.App.views.AdvancedSearchView({
                el: '#ui-search',
                model: new RT.App.models.AdvancedSearch()
            });

        }   

    },
    search: function() {
        //clear any previous search if any
        this.createView();
    },
    searchSetup: function(query) {
        this.createView();
        var $searchinputEl = $("#search-term"),     

        //check if storage entry exists and if it matches the query entered
            storedSearchTerm = amplify.store('search');
        if((!_.isUndefined(storedSearchTerm) && !_.isUndefined(query)) && (storedSearchTerm.term === unescape(query))) {

            //retrieve storage and perform search based on preferences
            RT.App.searchCategoryOptions.attributes = storedSearchTerm.sections;

            //each filter view options should now set the correct options
            RT.App.vent.trigger("change:options");

            //add search query to search input
            $searchinputEl.val(storedSearchTerm.term);

            //trigger search

            $(".trigger-search").trigger("click");
        }
    }
});
$(function(){

    // Instantiate the router
    var searchRouter = new RT.App.searchRouter();
    if(Backbone.History.started) {
        Backbone.history.stop();
    }
    Backbone.history.start();
});
4

1 に答える 1

0

スペースを処理できます。最初に検索用語を必ずエンコードしてください。

this.navigate('search/'+ encodeURIComponent(searchTerm));
于 2013-05-22T14:34:17.660 に答える