Url Mapping в Ember js - PullRequest
       10

Url Mapping в Ember js

0 голосов
/ 03 февраля 2020

У меня есть два отдельных маршрута: парковка и автомобиль (не вложенный маршрут).

Маршрут парковки имеет динамический c сегмент, такой как идентификатор парковки /parking/21, и у автомобиля есть имя автомобиля и идентификатор /car/ford/12

Маршрутизатор. js:

Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"})
   this.route("car", { path: "/car/:carName/:carId" })
});

при переходе с парковочного маршрута на автомобильный, мне нужен URL-адрес типа (/parking/21/ford/12)

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Если вы не хотите вкладывать, вам нужно включить полный URL в ваш маршрут car, например:

Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"});
   this.route("car", { path: "/parking/:parkingId/car/:carName/:carId" });
});

При переходе на маршрут car вам снова потребуется чтобы пропустить все три динамических c сегмента, что-то вроде:

<LinkTo @route="car" @models=(array "myParkingId" "myCarName" "myCarId") />

или:

this.router.transitionTo('car', "myParkingId", "myCarName", "myCarId");
0 голосов
/ 03 февраля 2020

Я думаю, что ваше решение заключается во вложении маршрутов:

Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"}, function() {
       this.route("car", { path: "/car/:carName/:carId" })
   });
});

Затем переместите существующие логики c из шаблона parking в маршрут parking.index. Таким образом, у вас есть 3 маршрута:

  • parking
  • parking.index с URL-адресами типа /parking/1
  • parking.car с URL-адресами типа /parking/1/car/ford/7

однако вы никогда не будете только на маршруте parking. Вы будете либо на parking.index, либо на parking.car.

. Из маршрутов parking.index и parking.car вы можете получить доступ к модели маршрута parking с помощью this.modelFor('parking') из Route. .

Вы можете переходить с transitionTo('parking', 1) или transitionTo('parking.car', 1, 'ford', 7).

...