我正在Ember.js中构建一个包含表格的组件。该表中的每个tr
都是使用{{#link-to ...}}
创建的,因此点击该行的任意位置都会将用户带到另一条路线。
但是,我想在这些行中点击td
元素以在新窗口中打开链接。我这样做是为了行动。
现在,点击相应的td
元素也会触发{{#link-to}}
重定向并激活td
元素上的操作。
相反,我想点击正确的td
元素,只有 触发该元素的操作,并忽略上面的{{#link-to}}
事件。我该怎么做呢?
这就是我的代码:
<table>
{{#link-to 'widget' widget.id tagName='tr'}}
<td>Go to link-to</td>
<td {{action 'sendMail' widget.email}}>Send Email</td>
{{/link-to}}
</table>
答案 0 :(得分:2)
Look at this twiddle实施了您的案例。
你需要调用event.stopPropagation才能获得event
个对象,为了得到它我使用onclick={{action
<table>
{{#link-to 'my-route' tagName='tr' bubble=false}}
<td>Go to link-to</td>
<td onclick={{action 'sendMail' }}>Send Email</td>
{{/link-to}}
</table>
在sendMail中,您需要停止事件传播。
actions:{
sendMail(event){
console.log('sendMail');
event.stopPropagation();
}
}