【问题标题】:Url Mapping in Ember jsEmber js 中的 URL 映射
【发布时间】:2020-02-03 13:20:51
【问题描述】:

我有两条单独的路线停车和汽车(不是嵌套路线)。

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

Router.js:

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

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

【问题讨论】:

  • 你有那个网址。什么不工作?也许你想加入 ember 社区 Discord 频道?
  • 你试过transitionTo('car', 'ford', '21')吗?如果你想在需要停车之前将car 路由嵌套在parking 下。
  • 汽车路线不会嵌套在停车场下,它是一条单独的路线
  • 但应该如此。这可能是您的解决方案。

标签: ember.js url-routing ember-cli


【解决方案1】:

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

【讨论】:

  • 还需要在没有停车详细信息的情况下转换到汽车路线,所以我在路由器this.route("car", { path: "/car/:carName/:carId" }); 中添加了这条线,但当this.transitionTo("/car/ford/12") 时我无法获得
  • 您不能使用不同的paths 两次添加相同的路由。也可以是this.transitionTo("car", "ford", "12")
  • 如前所述,它需要是具有不同名称的不同路线!
【解决方案2】:

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

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 路由,您可以通过this.modelFor('parking')Route 访问parking 路由的模型。

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

【讨论】:

  • 没有嵌套路由可以实现吗?我介绍了一些类似的案例,并计划在未来引入新的案例。我的观点是,每次都改变路径效率不高。
  • 您的路由嵌套应该反映您的 URL 结构。这就是它的重点。另一件事是只拥有所有 3 个动态段:this.route("car", { path: "/parking/:parkingId/car/:carName/:carId" })
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
相关资源
最近更新 更多