2017-05-19 9 views
0

Ember.jsにテーブルを含むコンポーネントをビルドしています。そのテーブルの各tr{{#link-to ...}}を使用して作成され、行のどこかをクリックすると別のルートに移動するようになります。Ember - リンク先ブロック内のアクション

ただし、これらの行のtd要素をクリック可能にして、新しいウィンドウでリンクを開くことを希望します。私はこれをアクションとしてやっています。

ここで、適切なtd要素をクリックすると、{{#link-to}}がリダイレクトされ、td要素の操作も有効になります。

代わりに、私はその要素のアクションをトリガー、および上記{{#link-to}}イベントを無視に適切td要素をクリックしたいと思います。これをどうやってやりますか?

これは私のコードは次のようになります。

<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

の可能性のある重複した[エンバー:その中のアクションがクリックされたときに発射からリンクへのを防ぐ](http://stackoverflow.com/questions/24369237/ember-prevent-link-to-from-firing - アクション中 - それをクリックしたとき) –

答えて

0

Look at this twiddleは、あなたのケースを実装しました。あなたがeventオブジェクトを持っている必要があること、それは私がsendmailのでは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> 

を使用取得するため

は、あなたがするevent.stopPropagationを呼び出す必要がある、あなたはイベントの伝播を停止する必要があります。

actions:{ 
    sendMail(event){ 
     console.log('sendMail'); 
     event.stopPropagation(); 
    } 
    } 
+1

これは私のために働いた!ありがとうございました!このためには 'event'パラメータが必要であることを指摘したいだけです。渡す必要のある他のパラメータがある場合は、最後に「イベント」を入れます。また、 'event.stopPropagation();'が関数の最後のものであることを確認してください。 – Argus9

関連する問題