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

时间:2015-11-26 16:53:48

标签: 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}}

我收到此错误:

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

我尝试更改路由器中的呼叫顺序,但没有成功。我想我对如何检测路线缺乏一些理解。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

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

this.route('issue', {path: '/foo/param1'});

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

export default Controller.extend({
  queryParams: ['param2', 'param3'],
  param2: null,
  param3: null
});

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

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

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

以下是有关查询参数的一些文档,我认为这是一个较冷的Ember功能:http://guides.emberjs.com/v2.2.0/routing/query-params