2016-11-10 79 views
0

当应用程序运行时,当参数来自get方法时,有没有办法在AngularJs 1.4中获取参数?例如:http://www.myapp.com/whatever?param1=1234 我只是在这里的意思是在我的app.js文件:运行应用程序时获取参数url角度

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()。它用params返回一个对象。 –

回答

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));