使用Backbone Marionette中的查询参数获取当前URL

时间:2015-02-02 19:53:37

标签: javascript backbone.js marionette backbone-routing

网址:http://localhost:3000/dashboard?ID=10400&Name=10400

我试图从URL中获取查询参数ID和名称但我未定义。我也尝试过backbone-queryparams,但它仍然不起作用。知道如何使用Backbone Marionette中的params获取当前URL

define([
    'jquery',
    'backbone',
    'marionette',       
    'modules/dashboard/controllers/dashboardController',
    'backbone.queryparmas'
], function ($, Backbone, Marionette, Controller) {
    'use strict';

    return Marionette.AppRouter.extend({

        appRoutes: {
            '': 'dashboard'
        },

        initialize: function(){
            console.log( Backbone.history.fragment ); // getting undefined
        },

        controller: new Controller()
    });

});

2 个答案:

答案 0 :(得分:1)

从这里的示例(https://stackoverflow.com/a/11671457/3780922)看,最好的选择是设置一个带有catchall参数的路由,它将为您提供整个查询字符串。

appRoutes: {
   '': 'showDash', //default for blank/empty route
   'dashboard': 'showDash',
   'dashboard?*queryString' : 'showDash'
},
showDash: function (queryString) {
    var params = parseQueryString(queryString);
    if(params.foo){
        // foo parameters was passed
    }
}

但是,您必须编写自己的查询字符串解析器,但如果它不为null,那么您在queryString对象中传递了您的查询参数,在您的示例中将为"ID=10400&Name=10400"

答案 1 :(得分:0)

我必须这样做才能获得查询参数。不确定是否有更好的方法。

messagedashboard: function () {
  var searchParams = window.location.search.slice(1); // returns 'ID=10400&Name=10400'
  var getParamsFromSearchParams = $.deparam(searchParams); //changes into object
}

使用$.deparam检查jquery.bbq库。