UI-路由器:父抽象时子状态中的状态参数
UI-Router: state params in child state when parent abstract
我有以下 ui-路由器定义:
$stateProvider
.state('main', {
abstract: true,
url: '/main',
templateUrl: 'partials/wrapper.html',
controller: 'WrapperCtrl'
})
.state('main.notidetails', {
controller: 'NotificationsDetailsCtrl',
url: '/notidetails/:id',
params: ['id'],
templateUrl: 'partials/notificationDetails.html'
});
但是启动应用程序时我得到:
Error: Both params and url are specified in state 'main.notidetails'
我应该怎么做?我希望 'notidetails' 保留为子状态并拥有它的参数
我认为错误说明了一切。您必须在 URL 或 params
中使用参数。从您所在的州删除 params
。将 $stateParams
注入到你的状态控制器,你可以像这样访问你的参数 $stateParams.id
.
因此您的代码将如下所示:
$stateProvider
.state('main', {
abstract: true,
url: '/main',
templateUrl: 'partials/wrapper.html',
controller: 'WrapperCtrl'
})
.state('main.notidetails', {
controller: 'NotificationsDetailsCtrl',
url: '/notidetails/:id',
templateUrl: 'partials/notificationDetails.html'
});
我有以下 ui-路由器定义:
$stateProvider
.state('main', {
abstract: true,
url: '/main',
templateUrl: 'partials/wrapper.html',
controller: 'WrapperCtrl'
})
.state('main.notidetails', {
controller: 'NotificationsDetailsCtrl',
url: '/notidetails/:id',
params: ['id'],
templateUrl: 'partials/notificationDetails.html'
});
但是启动应用程序时我得到:
Error: Both params and url are specified in state 'main.notidetails'
我应该怎么做?我希望 'notidetails' 保留为子状态并拥有它的参数
我认为错误说明了一切。您必须在 URL 或 params
中使用参数。从您所在的州删除 params
。将 $stateParams
注入到你的状态控制器,你可以像这样访问你的参数 $stateParams.id
.
因此您的代码将如下所示:
$stateProvider
.state('main', {
abstract: true,
url: '/main',
templateUrl: 'partials/wrapper.html',
controller: 'WrapperCtrl'
})
.state('main.notidetails', {
controller: 'NotificationsDetailsCtrl',
url: '/notidetails/:id',
templateUrl: 'partials/notificationDetails.html'
});