我对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');
}
}
答案 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);
}
}