Как разрешить "Открыть на новой вкладке" при использовании ng-click?
У меня есть таблица на HTML, и каждая строка приводит к другой странице, с более подробной информацией об этой строке. Но поскольку я использую angularjs, с ng-click я не могу щелкнуть правой кнопкой мыши эту строку и выбрать "открыть на новой вкладке". Есть ли способ его решить?
Спасибо заранее!
Ответы
Ответ 1
Если возможно, вы должны преобразовать свой элемент в элемент привязки.
<a ng-href="{{ your dynamic url }}" ng-click="your function">Your link text</a>
Браузер будет интерпретировать элемент как ссылку, и поэтому вы получите правильное выпадающее меню.
Обратите внимание, что вы также должны иметь правильное значение href для открытия на новой вкладке.
EDIT:
Я бы рекомендовал этот вопрос, если вы хотите получить более подробный ответ о том, как исправить такое поведение с помощью JQuery.
Ответ 2
Внутри функции ng-click вы можете вызывать window.open(url, '_blank')
, однако, как слово предупреждения, это будет зависеть от браузера и текущих настроек.
В некоторых случаях это откроется во всплывающем окне, а в других случаях оно откроется на новой вкладке. Невозможно заставить любое поведение, поскольку javascript является агностиком браузера, он просто запросил новое окно, и именно браузер решил решить, как его реализовать. см. здесь, чтобы обсудить форматирование вкладки или окна
Однако единственный способ получить этот параметр правой кнопки мыши или щелчок Ctrl + щелчок, чтобы открыть на новой вкладке, - это если браузер видит тег <a>
. В противном случае он не рассматривает это как ссылку.
Ответ 3
Если вы хотите сгенерировать свой href
динамически на основе некоторого условия, вы можете установить событие href
on ng-mousedown
, после чего вы можете выполнить любое событие, например 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');
}
};
Ответ 4
Вы должны использовать якорный элемент внутри строки таблицы.
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
}