2016-06-16 66 views
0

我正在使用ui.router來處理角度中的路由。這就是我要做的:如何在angularjs中使用ui-router獲取url參數

我有,我已經定義的狀態像這樣我的路由器文件:

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=' 

我能夠獲得這些值。這是對的嗎?

在AuthenticationController

回答

1

你的狀態定義的對象需要明確指出,它預計參數。用uirouter做這件事有多種方法。最簡單的方法是將其添加到您的URL定義中:

url: '/login?user&pass', 

您應該始終保持警惕處理用戶憑據。這種方法似乎可能是一種糟糕的代碼味道。你能否在你的原始問題中談一談你的計劃是在這個控制器和狀態下進行的,我們可以確保你沒有打開自己的安全問題。

+0

這實際上是一個沒有人會看的自動生成的URL。這僅供內部使用。此應用程序不在瀏覽器中運行,而是在CEF應用程序中運行。 –

0

,注入$ stateParams 應該像

{user: "name", pass: "423%%$dsad32"} 
+0

我用控制器代碼更新了我的問題。這是我第一次嘗試,但沒有得到任何東西。 –

+0

根據你的代碼更新,就像Martin說的那樣向URL定義添加參數。 – hasnat