网址: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()
});
});
答案 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库。