AngularJs:不使用$ location.path重定向的相对路径

时间:2016-12-19 02:09:36

标签: javascript angularjs angular-ui-router

我对angularjs url重定向有问题。使用$ location.path()加载url似乎与url模式完美配合,比如$ location.path('/ admin')。但是,当我试图加载$ location.path('/ admin / home')时,它无效。如果我尝试使用$ location.path('home'),则会加载html模板。 以下是我的代码。

  $stateProvider
        .state('admin', {
            url: '/admin',
            templateUrl: 'Admin/admin.html',
            controller: 'adminController',
            controllerAs: 'vm'
        })
        .state('admin.home', {
            url: '/admin/home',
            templateUrl: 'Admin/admin.home.html'
            controller: 'adminHomeController',
            controllerAs: 'vm'
        })

控制器脚本

authorizeUser(function(result){
     if(result === true) {
         $location.path('/admin/home');
     }
}

2 个答案:

答案 0 :(得分:2)

当您使用嵌套状态时,请勿在此处使用$location.path。相反,请注入$state并使用$state.go,状态名称如下所示。

authorizeUser(function(result){
     if(result === true) {
         $state.go('admin.home');
     }
}

注意:由于此(admin.home)是admin状态的嵌套状态,因此模板ui-view中应该有另一个Admin/admin.html管理状态。

答案 1 :(得分:0)

<强> 1。 $ state.go()按状态ID

$state.go('admin.home');

<强> 2。带有网址路径的$ location.path()。

根据我的经验,“ $ location.path()”函数的调用时间非常短暂。

所以,您必须使用 $ timeout service

authorizeUser(function(result){
     if(result === true) {
        $timeout(function() {
          $location.path('/admin/home');
        }, 300);
     }
}