如何在ember链接中传递动态路由参数

问题描述

router.js中有两条路由

'user/:id' -> will move to user show page 
'user-answer/:id/answers' -> will move to user answer page 

当前,我正在使用if条件来更改链接,如下面的代码所示,

sidePanel.hbs

{{each users as |user|}}
{{#if (eq routesValue user-answer)}}
    {{#link-to user.name user.id answer}}
      {{user.name}}
    {{/link-to}}
{{else}}  
    {{#link-to user.name user.id}}
      {{user.name}}
    {{/link-to}}
{{/if}}
{{/each}}

我在其他两个组件中使用sidePanel组件

{{sidePanel routesValue='user-answer' answer=answer users=users}}
{{sidePanel routesValue='user' users=users}}

它工作正常,但是有一种方法可以一次使用链接到,而不是像传递动态路由参数一样进行条件检查吗?

类似

 {{each users as |user|}}
        {{#link-to user.name user.id optionalParam=answer}}
          {{user.name}}
        {{/link-to}}
    {{/each}}

解决方法

<LinkTo>格式采用带有数组的@models参数:

<LinkTo @route="routename" @models={{this.models}}>

这应该使在js中计算数组变得容易:

get models() {
  const result = [this.user.id];
  if(this.answer) {
    result.push(this.answer);
  }
  return result;
}