2015-02-02 12 views
1

URL : 나는 URL에서 검색어 매개 변수 ID와 이름을 얻으려고하지만 정의되지 않은 얻을 http://localhost:3000/dashboard?ID=10400&Name=10400백본에 쿼리 매개 변수와 현재 URL을 얻기 마리오네트

. 나는 또한 백본 queryparams 시도했지만 여전히 작동하지 않습니다. Backbone Marioette에서 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

쿼리 매개 변수를 가져 오려면이 작업을 수행해야했습니다. 더 좋은 방법이 있는지 확실하지 않습니다. $.deparam 체크 jquery.bbq 라이브러리를 사용하기 위해

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

.

+0

이것은 URL이'domain.com/#path? query = param' 일 때 작동하지 않는 것 같습니다. 'window.location.search' 슬라이스는 나를 위해 빈 문자열을 리턴합니다. – mix3d

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가 아닌 경우에, 당신은 당신의 쿼리 매개 변수가 될 것입니다 귀하의 예제에서 쿼리 문자열 객체에 전달해야 "ID=10400&Name=10400"