如何在路由中传递两个参数ui
How to pass two parameters in route ui
我的控制器需要接收两个 id 值。一个 id 值标识一个供应商,第二个标识一个事件(eventId 和 VendorId)。
我现在的状态就是这样
.state('/vendordetail', {
url: '/vendordetail/:vendorId',
templateUrl: '/home/vendordetail',
controller: 'VendorDetailController',
resolve: {
vendorId: ['$stateParams', function ($stateParams) {
return $stateParams.vendorId;
}],
vendorPreload: ['$stateParams', 'vendorDetailRepo', '$state', function ($stateParams, vendorDetailRepo, $state) {
if ($stateParams.vendorId != "")
return vendorDetailRepo.get({ id: $stateParams.vendorId }).$promise;
}]
}
});
目前我可以获取 vendorId。但我想在状态中包含一个 eventId。谁能帮我修改状态以获取第二个参数(eventId)?
谢谢。
首先,如果您没有充分的理由反对,我建议您将参数设置为 url 参数。
按照此建议,您的状态可能如下所示:
state('/vendordetail', {
url: '/vendordetail?:vendorId:eventId',
templateUrl: '/home/vendordetail',
controller: 'VendorDetailController',
resolve: {
vendorId: ['$stateParams', function ($stateParams) {
return $stateParams.vendorId;
}],
eventId: ['$stateParams', function ($stateParams) {
return $stateParams.eventId;
}],
vendorPreload: ['$stateParams', 'vendorDetailRepo', '$state', function ($stateParams, vendorDetailRepo, $state) {
if ($stateParams.vendorId != "")
return vendorDetailRepo.get({ id: $stateParams.vendorId }).$promise;
}]
}
});
顺便说一句:您不需要解析参数。您可以简单地将 $stateParams 注入您的控制器。
url: '/vendordetail/:vendorId'/:eventId,
不确定为什么在解析以及 url 部分中有 vendorId。只要将 $stateParams 注入到您的控制器中,您就可以通过这种方式访问它们。
我的控制器需要接收两个 id 值。一个 id 值标识一个供应商,第二个标识一个事件(eventId 和 VendorId)。
我现在的状态就是这样
.state('/vendordetail', {
url: '/vendordetail/:vendorId',
templateUrl: '/home/vendordetail',
controller: 'VendorDetailController',
resolve: {
vendorId: ['$stateParams', function ($stateParams) {
return $stateParams.vendorId;
}],
vendorPreload: ['$stateParams', 'vendorDetailRepo', '$state', function ($stateParams, vendorDetailRepo, $state) {
if ($stateParams.vendorId != "")
return vendorDetailRepo.get({ id: $stateParams.vendorId }).$promise;
}]
}
});
目前我可以获取 vendorId。但我想在状态中包含一个 eventId。谁能帮我修改状态以获取第二个参数(eventId)?
谢谢。
首先,如果您没有充分的理由反对,我建议您将参数设置为 url 参数。
按照此建议,您的状态可能如下所示:
state('/vendordetail', {
url: '/vendordetail?:vendorId:eventId',
templateUrl: '/home/vendordetail',
controller: 'VendorDetailController',
resolve: {
vendorId: ['$stateParams', function ($stateParams) {
return $stateParams.vendorId;
}],
eventId: ['$stateParams', function ($stateParams) {
return $stateParams.eventId;
}],
vendorPreload: ['$stateParams', 'vendorDetailRepo', '$state', function ($stateParams, vendorDetailRepo, $state) {
if ($stateParams.vendorId != "")
return vendorDetailRepo.get({ id: $stateParams.vendorId }).$promise;
}]
}
});
顺便说一句:您不需要解析参数。您可以简单地将 $stateParams 注入您的控制器。
url: '/vendordetail/:vendorId'/:eventId,
不确定为什么在解析以及 url 部分中有 vendorId。只要将 $stateParams 注入到您的控制器中,您就可以通过这种方式访问它们。