【问题标题】:Get Current URL with query parameters in Backbone Marionette在 Backbone Marionette 中获取带有查询参数的当前 URL
【发布时间】:2015-04-01 20:46:42
【问题描述】:

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

我正在尝试从 URL 中获取查询参数 ID 和名称,但未定义。我也尝试过主干查询参数,但它仍然不起作用。知道如何在 Backbone Marionette 中使用参数获取当前 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()
    });

});

【问题讨论】:

    标签: javascript backbone.js marionette backbone-routing


    【解决方案1】:

    我必须这样做才能获取查询参数。不知道有没有更好的办法。

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

    对于使用$.deparam,请检查jquery.bbq 库。

    【讨论】:

    • 当 url 为 domain.com/#path?query=param 时,这似乎不起作用。 window.location.search 切片为我返回一个空字符串
    【解决方案2】:

    从这里的示例 (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"

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 2011-03-24
      • 2023-03-17
      • 2014-05-17
      • 1970-01-01
      • 2017-07-01
      • 2013-04-18
      • 2023-03-17
      • 2016-12-31
      相关资源
      最近更新 更多