HTMLのテーブルがあり、各行が異なるページに移動し、その行の詳細が表示されます。しかし、angularjsを使用しているため、ngキーを押しながらクリックすると、この行を右クリックして「新しいタブで開く」を選択できません。それを解決する方法はありますか?
前もって感謝します!
可能であれば、要素をアンカー要素に変換する必要があります。
<a ng-href="{{ your dynamic url }}" ng-click="your function">Your link text</a>
ブラウザは要素をリンクとして解釈し、そのため正しいドロップダウンを提供します。新しいタブで開くには、正しいhref値も必要であることに注意してください。
EDIT:JQueryを使用してこの種の動作を修正する方法について、より詳細な回答が必要な場合は この質問 をお勧めします。
Ng-click関数内でwindow.open(url, '_blank')
を呼び出すことができますが、Word of warningとして、これはブラウザと現在の設定に依存します。
場合によっては、これはポップアップウィンドウで開き、他の場合では新しいタブで開きます。 JavaScriptはブラウザーに依存しないため、どちらの動作も強制する方法はありません。単に新しいウィンドウを要求しただけで、ブラウザーの実装方法はブラウザー次第です。 タブまたはウィンドウの強制に関する説明はこちらを参照
ただし、その右クリックオプションまたはCtrlキーを押しながらクリックして新しいタブを開く唯一の方法は、ブラウザに<a>
タグ。それ以外の場合、リンクとしては扱われません。
何らかの条件に基づいてhref
を動的に生成する場合は、ng-mousedown
イベントにhref
を設定し、その後open link in new tab
などのイベントを実行できます。 open link in new window
およびclick
。
HTML:
<a href="javascript:void(0)" ng-mousedown="openDetailView($event, userRole)">{{label}}</a>
JS:
$scope.openDetailView = function (event, userRole) {
if(userRole == 'admin') {
jQuery(event.target).attr('href', 'admin/view');
} else {
jQuery(event.target).attr('href', 'user/view');
}
};
テーブル行内でアンカー要素を使用する必要があります。
[〜#〜] html [〜#〜]
<tr>
<a ng-href="dynamic url" ng-click="openItem($event)">Open the item</a>
</tr>
コントローラー
$scope.openItem = function (event) {
event.preventDefault();
// code to open a item
}