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