2017-09-27 16 views
5

我要实现以下几点:有一个链接触发仅在点击一个动作,但打开新的标签页上不同的路线点击

  • 首先,把一个链接。
  • 单击时,该链接将引发我目前的路线的动作(如折叠面板或类似的东西)

  • 当用户右键点击,选择“新标签”,这个相同的链接应该打开一个单独的路径(也不会触发当前路线的任何行动,因为它不会任何意义)

到目前为止,我已经试过如下:

<span {{action 'collapsePanel'}}> 
    {{#link-to 'otherRoute'}} 
    Some text 
    {{/link-to}} 
</span> 

我希望通过将它包含在可点击的范围中来覆盖默认的链接到行为,但无济于事:现在,当我点击链接文本时,我被重定向到新路线和点击动作本身从未发生过。

是否有可能实现像使用EmberJS或甚至纯JS调整?

谢谢!

回答

2

好吧,我向一位同事解释了这一点。这段代码工作完全按照我想要的结果:

{{#link-to "otherRoute"}} 
    <span {{action "collapsePanel" bubbles=false}}> 
     Some text 
    </span> 
{{/link-to}} 

的关键是设置“气泡=假”,这将阻止行动接管链接行为,但仍允许点击触发它。

2

span内使用闭包的动作:

{{#link-to 'otherRoute'}} 
    <span onclick={{action 'collapsePanel'}}> 
    Some text 
    </span> 
{{/link-to}} 

,那么你可以调用preventDefault并返回false:

collapsePanel(event) { 
    event.preventDefault(); 
    return false; 
} 

这应该防止事件bubbeling到link-to

+0

嗨,谢谢你的回答!我尝试了你所说的,但点击后,它仍然遵循链接。你有另一个想法吗? –

相关问题