Подтвердить что ты не робот

Как разрешить "Открыть на новой вкладке" при использовании ng-click?

У меня есть таблица на HTML, и каждая строка приводит к другой странице, с более подробной информацией об этой строке. Но поскольку я использую angularjs, с ng-click я не могу щелкнуть правой кнопкой мыши эту строку и выбрать "открыть на новой вкладке". Есть ли способ его решить?

Спасибо заранее!

4b9b3361

Ответ 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
}