2016-11-10 2 views
0

Есть ли способ получить параметры в AngularJs 1.4 при запуске приложения, когда параметры получаются из метода get? например: http://www.myapp.com/whatever?param1=1234 Я имею в виду как раз здесь, в моем app.js файле:Получить параметры url angular при запуске приложения

var myApplication = angular.module('App', [ui.router,...]) 
     .run(function ($rootScope,$http,....){ 
      var param = // I wish to read the param here 
} 

Если не возможно, то как я могу получить его с помощью контроллера? Благодаря

+0

Вы можете использовать $ stateProvider для определения состояний с параметрами. Проверьте это: https://scotch.io/tutorials/3-simple-tips-for-using-ui-router –

+0

Спасибо, я решил использовать $ locatio.search(). Он возвращает объект с параметрами. –

ответ

0

Доброе утро, Использование $ location.search() возвращает объект с парафирующими элементами. Спасибо!

0

Если ваш маршрут был настроен получить, что параметры, которые вы можете наблюдать за $ stateChangeStart

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) { 
console.log(toParams); 
} 

Если нет, то есть обходной путь (работает отлично: D):

один за другим

function getParamByName(name, url) { 
    if (!url) url = window.location.href; 
    name = name.replace(/[\[\]]/g, "\\$&"); 
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
     results = regex.exec(url); 
    if (!results) return null; 
    if (!results[2]) return ''; 
    return decodeURIComponent(results[2].replace(/\+/g, " ")); 
} 

getParamByName('param1'); 

Или все

function getQueryParams(qs) { 
    qs = qs.split('+').join(' '); 
    var params = {}, 
     tokens, 
     re = /[?&]?([^=]+)=([^&]*)/g; 
    while (tokens = re.exec(qs)) { 
     params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]); 
    } 
    return params; 
} 

console.log(getQueryParams(document.location.search)); 
Смежные вопросы