我有一个控制器需要接收两个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注入到控制器中,就可以通过这种方式访问它们。