2016-10-17 81 views
0

有條件地,我需要route我的應用程序到一個新的路徑。所以我想知道我的應用程序的當前url如何從UI路由器獲取當前網址 - 狀態?

我該如何獲得我目前的網址,例如toState.name

這裏是我的方案:

.state('serialCreateCase', { 
     url: '/sn={serialNumber}', //sn=12345; 
     templateUrl:'app/createCase/create-case.html', 
     controller: 'createCaseController as ctrl', 
     data: { 
      requireLogin: false 
     } 

這裏的條件:

if(toState.name==="serialCreateCase"){ // i am getting proper result 
      console.log('toState.name', toState); 
      $rootScope.goToView("serialCreateCase"); //i am asking to go there. but not works! //sn=12345; 
      event.preventDefault(); 
     } 

在此先感謝。

+0

你想當前的URL或去另一個觀點?向我們展示'goToView()'方法。 「不工作」是什麼意思? – Weedoze

+0

我想把它當作當前的url,'// sn = 12345;' - 每當用戶輸入url – 3gwebtrain

+0

之上的url時,控制器的$ location.path()應該訪問url。 – rrd

回答

2

,因爲你正在使用states

你不需要的網址,您應該使用此方法

$state.go("serialCreateCase", {sn: 12345}); 

這會向用戶發送陳述serialCreateCase與數據

Key : sn 
Value : 12345 

編輯

控制器內部你的代碼看起來應該是這樣

if (toState.name === "serialCreateCase") { // i am getting proper result 
    console.log('toState.name', toState); 
    $state.go("serialCreateCase", { sn: 12345 }); 
    event.preventDefault(); 
} 
+0

我無法理解你的答案,你能從我的代碼更新嗎?這裏我不知道用戶輸入的序列號 – 3gwebtrain

+0

你的代碼寫在哪裏?控制器內部?點擊一個按鈕? – Weedoze

+0

在帶有'stateChangeStart'的控制器中,當用戶鍵入任何數字時,我想將它們發送到那裏 – 3gwebtrain

0

編輯代碼:

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

    var curentpath = fromState.url; 
    var split = curentpath.split(':'); 
    var params = $stateParams.sn; 

    var mainUrl = split[0] +params; 
    console.log(mainUrl); 
    }); 

& &路線:

.state('serialCreateCase', { 
     url: '/sn={serialNumber}', //sn=12345; 
     templateUrl:'app/createCase/create-case.html', 
     controller: 'createCaseController as ctrl', 
     data: { 
      requireLogin: false 
     } 
+0

這是發生在'stateChangeStart' - – 3gwebtrain

+0

@ 3gwebtrain,請檢查我更新了我的答案。 –

+0

目前我把'http:// localhost:3000/sn = 2345',我變成:'{ 「name」:「」, 「url」:「^」, 「views」: null, 「abstract」:true }' – 3gwebtrain