2015-07-23 4 views
1

У меня есть контроллер, которому необходимо получить два значения id. Одно значение идентификатора идентифицирует поставщика, а второе идентифицирует событие (eventId и VendorId).Как передать два параметра в маршруте ui

Мое нынешнее состояние как таковое.

.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)?

Спасибо.

ответ

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 в свой контроллер.

+0

Не видел, что вы уже ответили на это @AlexS ... solid. – DWDuck

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

Не знаете, почему у вас есть поставщик в решении, а также в части url. Пока $ stateParams вводится в ваш контроллер, вы можете получить к ним доступ таким образом.

Смежные вопросы