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