如何从UI路由器 - 状态获取当前URL?

时间:2016-10-17 06:38:55

标签: angularjs angular-ui-router

有条件地,我要求route我的申请到一条新路径。所以我想知道我申请的当前url

如何从状态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();
        }

提前致谢。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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
        }