如何在路由ui中传递两个参数

时间:2015-07-23 19:05:29

标签: angularjs angular-ui-router ui-sref

我有控制器需要接收两个id值。一个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)吗?

谢谢。

2 个答案:

答案 0 :(得分: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注入控制器即可。

答案 1 :(得分:0)

url: '/vendordetail/:vendorId'/:eventId,

不确定为什么你在解析和url部分都有vendorId。只要将$ stateParams注入您的控制器,您就可以这样访问它们。

相关问题