这是angular.ui.router定义
app.config([
'$stateProvider',
'$urlRouterProvider',
function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise('/');
$stateProvider.state('/login',{
url: "/",
controller: 'Login',
templateUrl: 'login.html'
})
.state('/useractivities',{
url: "/activities",
controller: 'activitiesController',
templateUrl: 'useractivities.html'
})
}
]);
在登录控制器中我正在执行
$state.go('useractivities', {});
这会产生错误"无法解决' useractivities'来自州' /'"
我尝试了一些像
这样的事情$location.url('useractivities')
但没有运气,谁能告诉我哪里出错?
答案 0 :(得分:30)
此处的问题是to
调用的$state.go()
参数必须是现有状态名称。 'activities'
不是现有名称......它是 '/activities'
我首先建议使用不同的州命名:
$stateProvider
// instead of this
// .state('/',{
// let's use this state name
.state('login',{ // this is a STATE Name
url: "/",
controller: 'Login',
templateUrl: 'login.html'
})
// instead of this
// .state('/activities',{
// use this
.state('activities',{ // this is a STATE Name
url: "/activities",
controller: 'activitiesController',
templateUrl: 'useractivities.html'
})
然后这将起作用
$state.go('activities', {}); // we use STATE Name here
$state.go('login', {}); // also state name...
点击此处了解更多详情:
<强>
to
强>字符串绝对状态名称或相对状态路径
将转换到的状态的名称或相对状态路径。如果路径以^或开头。然后它是相对的,否则它是绝对的。
一些例子:
$state.go('contact.detail') will go to the 'contact.detail' state
$state.go('^') will go to a parent state.
$state.go('^.sibling') will go to a sibling state.
$state.go('.child.grandchild') will go to a grandchild state.
答案 1 :(得分:2)
如果您尝试使用“。”,也会发生此问题。在你的州名。如,
$stateProvider.state("Activities.Details", { url: ... })
...
$state.go("Activities.Details");
如果您使用“_”或其他非保留字符,它将正常工作。
$stateProvider.state("Activities_Details", { url: ... })
...
$state.go("Activities_Details");