angular ui.router state.go('statename')无效

时间:2014-10-30 11:22:12

标签: angularjs angular-ui-router

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

但没有运气,谁能告诉我哪里出错?

2 个答案:

答案 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...

点击此处了解更多详情:

$state.go(to [, toParams] [, options])

  

<强> 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");