如何 $state.go()
How to $state.go()
我的 $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'
});
它适用于 'company' 状态(我使用 ui-sref),但此代码无效(从 'company' 状态调用):
$state.go('.detail', {
id: $scope.selectedItem.id //selectedItem and id is defined
});
我阅读了 Whosebug 的官方文档和答案,但没有找到解决方案。我不能使用 ui-sref,我使用 ui-grid,并且在 table 一行 select 之后打开新状态进行编辑。
我做错了什么?
始终有效的是完整的状态定义:
// 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 中,但它们取决于当前状态:
to string
Absolute state name or relative state path. Some examples:
- $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 grandchild state
我的错误是在正则表达式中,真的:
.state('company.detail', {
url : '/{id:\d*}',
templateUrl : '/admindesktop/templates/company/detail/',
controller : 'CompanyDetailController'
})
{id:\d*} 有效(整数 id)。
加载当前状态。看看这个。
$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams
Reference
我的 $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'
});
它适用于 'company' 状态(我使用 ui-sref),但此代码无效(从 'company' 状态调用):
$state.go('.detail', {
id: $scope.selectedItem.id //selectedItem and id is defined
});
我阅读了 Whosebug 的官方文档和答案,但没有找到解决方案。我不能使用 ui-sref,我使用 ui-grid,并且在 table 一行 select 之后打开新状态进行编辑。
我做错了什么?
始终有效的是完整的状态定义:
// 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 中,但它们取决于当前状态:
to string
Absolute state name or relative state path. Some examples:
- $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 grandchild state
我的错误是在正则表达式中,真的:
.state('company.detail', {
url : '/{id:\d*}',
templateUrl : '/admindesktop/templates/company/detail/',
controller : 'CompanyDetailController'
})
{id:\d*} 有效(整数 id)。
加载当前状态。看看这个。
$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams
Reference