Ember.js 余烬:相同的路线,不同的路径

Ember.js 余烬:相同的路线,不同的路径,ember.js,routes,url-routing,Ember.js,Routes,Url Routing,我希望以3种不同的方式调用路线: this.route('issue', {path: '/foo/:param1'}); this.route('issue', {path: '/foo/:param1/:param2'}); this.route('issue', {path: '/foo/:param1/:param2/:param3'}); 但当我尝试链接到时,例如使用: {{#link-to 'issue' issue.id issue.tag}}{{/link-to}}

我希望以3种不同的方式调用路线:

  this.route('issue', {path: '/foo/:param1'});
  this.route('issue', {path: '/foo/:param1/:param2'});
  this.route('issue', {path: '/foo/:param1/:param2/:param3'});
但当我尝试链接到时,例如使用:

{{#link-to 'issue' issue.id issue.tag}}{{/link-to}}
我得到这个错误:

Error: You didn't provide enough string/numeric parameters
to satisfy all of the dynamic segments for route issue

我试图改变路由器中呼叫的顺序,但没有成功。我想我对这些路线是如何被发现的缺乏理解。有什么想法吗?

在这里使用查询参数可能有意义。因此,在路由器中,只需定义一条路由:

this.route('issue', {path: '/foo/param1'});
然后在控制器中为param2和param3定义查询参数:

export default Controller.extend({
  queryParams: ['param2', 'param3'],
  param2: null,
  param3: null
});
我假设param1定义了实际的模型,但是2和3用于过滤,但是您可以通过将这三个参数移动到queryParams来使它们都是可选的

您可以在链接到帮助器中设置任意多(或无)个查询参数:

{{#link-to "posts" (query-params direction="asc")}}Sort{{/link-to}}

下面是一些关于查询参数的文档,这是我认为较酷的Ember功能之一:

是的,这也很有效。我很高兴能有更多的关于余烬中映射如何工作的信息。无论如何,谢谢=)