灰烬:相同的路线,不同的路径

Nic*_*orr 3 routes url-routing ember.js

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

  this.route('issue', {path: '/foo/:param1'});
  this.route('issue', {path: '/foo/:param1/:param2'});
  this.route('issue', {path: '/foo/:param1/:param2/:param3'});
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试链接到例如使用:

{{#link-to 'issue' issue.id issue.tag}}{{/link-to}}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error: You didn't provide enough string/numeric parameters
to satisfy all of the dynamic segments for route issue
Run Code Online (Sandbox Code Playgroud)

我试图改变路由器中的呼叫顺序,但没有成功.我想我对如何检测路线缺乏一些理解.有任何想法吗?

小智 5

在这里使用查询参数可能是有意义的.所以在路由器中只需定义一条路由:

this.route('issue', {path: '/foo/param1'});
Run Code Online (Sandbox Code Playgroud)

然后在控制器中为param2和param3定义查询参数:

export default Controller.extend({
  queryParams: ['param2', 'param3'],
  param2: null,
  param3: null
});
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用它们来过滤您的数据.我假设param1定义了实际模型,但是2和3用于过滤,但您可以通过将所有三个移动到queryParams来使所有这些都成为可选项.

您可以在link-to helper中设置尽可能多的(或没有)查询参数:

{{#link-to "posts" (query-params direction="asc")}}Sort{{/link-to}}
Run Code Online (Sandbox Code Playgroud)

这里有一些关于查询参数的文档,这是我认为的Ember特性之一:http://guides.emberjs.com/v2.2.0/routing/query-params