1

我有需要接收两个 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)?

谢谢你。

4

2 回答 2

5

首先,如果您没有充分的理由反对它,我建议您将参数作为 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 注入到您的控制器中。

于 2015-07-23T19:30:18.940 回答
0
url: '/vendordetail/:vendorId'/:eventId,

不知道为什么您在解析以及 url 部分中有一个 vendorId。只要将 $stateParams 注入到您的控制器中,您就可以通过这种方式访问​​它们。

于 2015-07-23T19:32:28.270 回答