2016-10-17 67 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