如何$ state.go()

时间:2015-01-20 10:07:43

标签: angularjs angular-ui-router

我的$ stateProvider:

$stateProvider
.state('home', {
    url : '/',
    templateUrl : '/admindesktop/templates/main/',
    controller : 'AdminDesktopMainController'
}).state('company', {
    url : '/company',
    templateUrl : '/admindesktop/templates/grid/',
    controller : 'CompanyGridController'
}).state('company.detail', {
    url : '/{id:\d+}', //id is 
    templateUrl : '/admindesktop/templates/company/detail/',
    controller : 'CompanyDetailController'
});

它适用于'公司'状态(我使用ui-sref),但此代码不起作用(从'公司'状态调用):

$state.go('.detail', {
    id: $scope.selectedItem.id //selectedItem and id is defined
});

我从StackOverflow上阅读官方文档和答案,但我找不到解决方案。我不能使用ui-sref,我使用ui-grid,在从表中选择一行进行编辑后打开新状态。

我做错了什么?

3 个答案:

答案 0 :(得分:16)

完整的州定义:

// instead of this
// $state.go('.detail', {
// use this
$state.go('company.detail', {
    id: $scope.selectedItem.id //selectedItem and id is defined
});

doc there are defined these options中,但它们依赖于CURRENT状态:

  

字符串
  绝对州名或相对州路径。一些例子:

     
      
  • $ state.go(' contact.detail') - 将转到contact.detail州
  •   
  • $ state.go(' ^') - 将转到父州
  •   
  • $ state.go(' ^ .sibling') - 将进入兄弟姐妹州
  •   
  • $ state.go(' .child.grandchild') - 将去孙子州
  •   

答案 1 :(得分:1)

我的错误是正则表达式,真的:

.state('company.detail', {
    url : '/{id:\d*}',
    templateUrl : '/admindesktop/templates/company/detail/',
    controller : 'CompanyDetailController'
 })

{id:\ d *} 工作(整数ID)。

答案 2 :(得分:1)

加载当前状态。检查一下。

sheet1 <- structure(list(col4 = c("01/01/2020", "38880", "39239", "02/02/2019"
)), class = "data.frame", row.names = c(NA, -4L))

Reference