如何在angularjs中使用ui-router获取url参数

时间:2016-06-16 09:35:59

标签: javascript angularjs angular-ui-router

我正在使用ui.router来处理我的路线。这是我想要做的:

我有我的路由器文件,我已经定义了这样的状态:

state('login',{
url:'/login',
views:{
    'slot1':{
    templateUrl:'app/modules/authentication/authentication.html',
    controller:'AuthenticationController',
    controllerAs:'authCntrl'
}}})

我想要做的是记录用户是否有这种格式的网址

http://someapp.io/login?user=name&pass=423%%$dsad32

现在我如何定义路由URL以及如何访问用户并传入我的控制器。不需要完整的代码,只需要文档的概念或链接即可。

这就是我的控制器的样子:

(function(){
angular.module("app.auth",[]).
controller("AuthenticationController", function( $state, $stateParams, AuthenticationService, LoadingService){
var self = this;
console.log($stateParams);
}

这会将以下内容记录到控制台:

Object {}

编辑:

奇怪的是,如果我将路由器中的url更改为:

url:'/instore_login?user=&pass='

我能够获得这些价值。这是对的吗?

2 个答案:

答案 0 :(得分:1)

您的状态定义需要明确声明它需要参数。使用uirouter进行此操作的方法不止一种。最简单的方法是将其添加到您的URL定义中:

url: '/login?user&pass', 

您应始终保持警惕处理用户凭据。这种方法似乎可能是一个糟糕的代码味道。您能否在原始问题中谈谈您对此控制器和状态的计划是什么,我们可以确保您不会面临安全问题。

答案 1 :(得分:0)

在您的AuthenticationController中,注入$ stateParams 它应该是一个像

这样的对象
{user: "name", pass: "423%%$dsad32"}