Backbone.js应该从URL获取GET参数吗?

Nyx*_*nyx 5 javascript jquery backbone.js underscore.js

我正在尝试为我的网站实现搜索功能.当用户foobarinput框中键入搜索词并提交时,他将被重定向到http://mydomain.com/search?query=foobar.

问题::如何query从URL中获取GET参数,并将其发送到后端并以JSON响应的形式获取结果数组?我应该这样做吗?

我下面的当前尝试甚至不会导致search触发该功能.

路由器

var AppRouter = Backbone.Router.extend({
    routes: {
        'search?query=:query': 'search'
        // ... and some other routes
    },

    search: function(query) {
        this.photoList = new SearchCollection();
        var self = this;
        this.photoList.fetch({
            data: {query: query},
            success: function() {
                self.photoListView = new PhotoListView({ collection: self.photoList });
                self.photoListView.render();
            }
        });
    }

});

var app = new AppRouter();
Backbone.history.start({
    pushState: true,
    root: '/'
});
Run Code Online (Sandbox Code Playgroud)

tbr*_*yen 5

针对此问题,针对Backbone提出了几个问题.有一个适用于此的现有插件:

https://github.com/jhudson8/backbone-query-parameters

或者,我目前在模拟API中使用查询字符串参数来匹配Backbone的路由匹配.看起来像这样

路线

"/api/v2/application/:query"

询问

application: function(query) {
  var params = $.deparam(query.slice(1));
  // params.something...
}
Run Code Online (Sandbox Code Playgroud)

至于你手头的实际问题,你如何重定向index.html到支持pushState