Angularjs angular ui.router state.go(';statename';)不工作

Angularjs angular ui.router state.go(';statename';)不工作,angularjs,angular-ui-router,Angularjs,Angular Ui Router,这是angular.ui.router定义 app.config([ '$stateProvider', '$urlRouterProvider', function($stateProvider, $urlRouterProvider){ $urlRouterProvider.otherwise('/'); $stateProvider.state('/login',{ url: "/", controller: 'Log

这是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') 

但是运气不好,有人能告诉我出了什么问题吗?

这里的问题是
$state.go()
调用的
to
参数必须是existing statename。而且
“活动”
不是现有名称。。。它是
'/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...
查看此处了解更多详细信息:

字符串绝对状态名或相对状态路径

将转换到的状态的名称或相对状态路径。如果路径以^or开头。那么它是相对的,否则它是绝对的

一些例子:


如果您试图在州名称中使用“.”,也可能发生此问题。例如:

$stateProvider.state("Activities.Details", { url: ... })
...
$state.go("Activities.Details");
如果使用“\u1”或其他非保留字符,它将正常工作

$stateProvider.state("Activities_Details", { url: ... })
...
$state.go("Activities_Details");

刚才看到了,我在州名称中使用了“/”。谢谢你,看到你成功了!
UI路由器
真是太棒了请注意,点符号“.”表示点之前状态名称的子状态。因此,如果您试图转到
go.sub
,sub应该是状态“go”的子状态。所以,如果您没有将sub定义为“go”的子级,它将不起作用。
$stateProvider.state("Activities_Details", { url: ... })
...
$state.go("Activities_Details");