Url Ember js 中的映射

Url Mapping in Ember js

我有两条独立的路线 parking 和 Car(不是嵌套路线)。

停车路线有动态路段,如停车 ID /parking/21 和 车有车名和车号 /car/ford/12

Router.js:

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

当从停车路线过渡到汽车路线时,我需要一个 url 比如 (/parking/21/ford/12)

我认为你的解决方案是嵌套路由:

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

然后将您现有的逻辑从 parking 模板移动到 parking.index 路由。所以你有 3 条路线:

  • parking
  • parking.index 网址如 /parking/1
  • parking.car 网址如 /parking/1/car/ford/7

然而,您永远不会 parking 路线中。您将在 parking.indexparking.car.

parking.indexparking.car 路线,您可以使用 Route.[=28] 的 this.modelFor('parking') 访问 parking 路线的模型=]

您可以使用 transitionTo('parking', 1)transitionTo('parking.car', 1, 'ford', 7) 进行转换。

如果您不想嵌套,那么您需要在 car 路由中包含完整的 URL,如下所示:

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

转换到 car 路线时,您再次需要通过所有三个动态路段,例如:

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

或者:

this.router.transitionTo('car', "myParkingId", "myCarName", "myCarId");