我有一个余烬引擎,在其中我定义了一条路线。它按预期工作。它被称为my-route
。它定义如下:
this.route('my-route', {path: '/my-route/:myparams'});
文件中的 routes.js
。
如您所见,它有一个动态细分,并根据myparams
显示不同的值。
我想为此route
添加嵌套route
。让我们说.../my-route/1
显示一个项目列表。当用户点击页面上列出的任何项目时,路线应为:my-route/display
,而不是my-route/1/display
。我不希望1
在这里,因为它可能会产生误导。
此外,link-to
也没有打开任何内容,点击什么都不做。
这就是我更改routes.js
文件的方式:
this.route('my-route', {path: '/my-route/:myparams'}, function() {
this.route('display');
});
在display.hbs
文件中,我添加了虚拟数据,display.js
也是空的,只是从Ember.route
延伸。
这样的my-route.hbs
链接:
{{#link-to 'my-route.display'}} Open me {{/link-to}}'
我是EmberJS的新手,如果有人能告诉我如何:
,我将不胜感激link-to
工作谢谢!
答案 0 :(得分:1)
1)我认为没有简单的方法可以从网址中删除动态细分 - 如果必须,您可能只是不使用动态细分并通过其他方式将信息发送到转换路径 - 您可以设置控制器直接 " newRoute.controller.set(' someProperty',my_param);" 或使用需要api(http://emberjs.com/guides/controllers/dependencies-between-controllers/)
但请注意,这两种方法都将使用控制器。如果您需要根据查询参数加载路径中的数据,请记住的是使用服务
但是这些方法并不是非常复杂,我只说如果动态段是绝对的,那就只能去做。
2)这个更容易 - 你需要在使用链接时传递动态部分以及路径名称 - 如ember guide中给出的那样 https://guides.emberjs.com/v2.0.0/templates/links/
答案 1 :(得分:0)
根据与@Lux和@Chhirag Kataria的讨论,我最终制作了两条不同的路线。我使用my-route
作为虚拟路由,并嵌套了display
和list
路由。