2016-05-20 10 views
1

他のものとhrefやng-clickをオーバーライドすることについて多くの質問がありましたが、私の質問は異なります。 私はこのような一部のHTMLコードしている:HrefはAngularjsの親クリックをオーバーライドします

<tr ng-click="doSomething()"> 
    <complicated html> 
    <a href="http://somelink">blablabla</a> 
    </complicated html> 
</tr> 

可能であれば私が望む何を:ユーザがリンクをクリックしたとき、NG-クリックがトリガされず、ユーザーが唯一のリンクにアクセスしてください。

これは可能ですか? stackoverflowに関する他の質問は、同じタグ内にあるng-clickとhrefについて質問しますが、そうではありません。

ありがとうございました!

+0

はおそらく、このためのソリューションがあります別の関数を追加しますが、とにかく、ng-clickを他のクリックと競合しないものにバインドすることは賢明でしょう。 – fhollste

+0

@Holle理由を理解するためにSandeepの回答にお読みください – clems4ever

答えて

3

私はあなたのdoSomething()機能が何であるか分かりません。あなたがそこでやっていることですが、これはあなたのための解決策になるかもしれません。

$scope.doSomething = function(event) { 
    if (event.target.nodeName === 'A' || event.target.tagName === 'A') { 
    console.log('target was <a>'); 
    } else { 
    console.log('target was not <a> - do something'); 
    } 
}; 

HTML:

<table> 
    <tr ng-click="doSomething($event)"> 
    <td><a href="http://google.com" target="_blank">blablabla</a></td> 
    </tr> 
</table> 

あなたがクリックされた要素がアンカーリンクであるかどうかをチェックし、それに基づいてものを行います。あなたは明らかにこれを多くの異なる状況に合わせることができます。

EDIT:

あなたはについてtagname vs nodenameを読んで、あなたがそれをやりたいかを決めることができます。

+0

ありがとうございます!それはまさに私が期待していた方法で動作します:) 実際、doSomethingはng-clickでオープンしたいのと同じリンクを開きますが、ng-clickはユーザが中クリックをして右クリックするのを防ぎます。 したがって、ユーザーが行をクリックすると、リンクが開きます。実際のリンクをクリックすると、ユーザーが望むもの(新しいタブ/ウィンドウ内で、または右クリックでリンクを取得するだけ)が実行されます。 私は私が晴れていることを願っています。 – clems4ever

+0

はい、わかりました。私はあなたを助けることができたことを聞いていいです:) – thepio

2

thepioのソリューションが機能します。しかし、あなたはあなたのdoSomething機能を変更したくない場合は、ここで代替の方法です:コントローラで

<tr ng-click="doSomething()"> 
    <complicated html> 
    <a href="" ng-click="navigateToSomeLink($event)">blablabla</a> 
    </complicated html> 
</tr> 

は、navigateToSomeLink()

$scope.navigateToSomeLink = function($event) { 
    $event.stopPropagation();  
    $window.open('http://somelink', '_blank'); 
} 
+0

あなたのソリューションをありがとう!それは私が最初に試したものですが、カスタムアクションを実行できるようにするために、hrefリンクとjavascriptリンク(これは私のdoSomethingがやっていることです)を使用する必要はありません。 Ctrl +クリックまたはミドルクリックなど)。 ng-clickは、ユーザーが行内の他の場所をクリックしたときのフォールバック(カスタムアクションなし)です。 もう一度ありがとうございます! – clems4ever

関連する問題