如何在使用ng-click时允许“在新标签页中打开”?

时间:2014-04-14 20:14:02

标签: html angularjs angularjs-ng-click

我有一个关于HTML的表格,每行都会指向不同的页面,其中包含有关该行的更多详细信息。但是当我使用angularjs时,使用ng-click我无法右键单击此行并选择在新标签页中打开'。有什么办法可以解决吗?

提前致谢!

4 个答案:

答案 0 :(得分:26)

如果可能,您应该将元素转换为锚元素。

<a ng-href="{{ your dynamic url }}" ng-click="your function">Your link text</a>

浏览器会将元素解释为链接,并为此提供正确的下拉列表。 请注意,您还必须在新选项卡中打开正确的href值。

修改 如果你想要一个关于如何使用JQuery解决这种行为的更详细的答案,我建议你this question

答案 1 :(得分:2)

在您的ng-click功能中,您可以拨打window.open(url, '_blank')作为警告字,这取决于浏览器和当前设置。

在某些情况下,这将在弹出窗口中打开,在其他情况下,它将在新选项卡中打开。没有办法强迫任何一种行为,因为javascript是浏览器不可知的,它只是简单地请求一个新的窗口,由浏览器决定如何实现它。 see here for a discussion on forcing a tab or window

然而,获取右键单击选项或按住ctrl +单击以在新选项卡中打开的唯一方法是浏览器是否看到<a>标记。否则它不会将其视为链接。

答案 2 :(得分:1)

如果您想根据某些条件动态生成href,那么您可以在href事件上设置ng-mousedown,之后您可以执行open link in new tab之类的任何事件,open link in new windowclick

<强> 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');

         }
  };

答案 3 :(得分:1)

你必须在表格行中使用锚元素。

<强> 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
}