ember.js Ember js中的URLMap

3b6akqbq  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(230)

我有两个单独的路线停车和汽车(不是嵌套路线)。
停车路线具有动态段,如停车id /parking/21和汽车具有汽车名称和id /car/ford/12

  • 路由器.js:*
Router.map( function() {
   this.route("parking", { path: "/parking/:parkingId"})
   this.route("car", { path: "/car/:carName/:carId" })
});

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

1l5u6lss

1l5u6lss1#

如果您不想嵌套,那么您需要在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");
lndjwyie

lndjwyie2#

我认为你的解决方案是嵌套航线:

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之类的URL
  • parking.car/parking/1/car/ford/7之类的URL

然而,你永远不会 * 只 * 在parking路线中。你要么在parking.index中,要么在parking.car中。
parking.indexparking.car路线,您可以从Route访问parking路线的模型和this.modelFor('parking')
您可以使用transitionTo('parking', 1)transitionTo('parking.car', 1, 'ford', 7)进行过渡。

相关问题