我希望以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
我尝试更改路由器中的呼叫顺序,但没有成功。我想我对如何检测路线缺乏一些理解。有什么想法吗?
答案 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