在AngularJS中单击按钮后打开一个新选项卡


76
<button type="button" class="btn btn-primary" ng-click="openTab()">new tab</button>

openTab = function () {
  $http.post('www.google.com');
}

我想要的是发布一个需求,然后单击“ openTab”按钮时在新选项卡中打开响应html。无法使用来执行此操作$http。我认为这可能很简单,但我找不到办法。


您可以接受解决方案吗?我的投票赞成@亚伦一号:)
Sampath

Answers:


173

您可以使用$ window服务在此处在控制器中完成所有操作。$ window是全局浏览器对象窗口的包装。

为此,将$ window注入到控制器中,如下所示

.controller('exampleCtrl', ['$scope', '$window',
    function($scope, $window) {
        $scope.redirectToGoogle = function(){
            $window.open('https://www.google.com', '_blank');
        };
    }
]);

重定向到动态路由时效果很好


2
Chrome锁定了此弹出式窗口。.如何识别它已锁定并通知用户呢?
vp_arth

它在chrome和firefox中工作正常,但在IE用户中被注销并重定向到登录页面。是否有一些解决方案可以解决IE的问题
Nitu Bansal

21

我这样解决了这个问题。

<a class="btn btn-primary" target="_blank" ng-href="{{url}}" ng-mousedown="openTab()">newTab</a>

$scope.openTab = function() {
    $scope.url = 'www.google.com';
}

这个技巧非常好,特别是对于正在处理Chrome安全性可以锁定由脚本手动打开的新标签页的问题的人而言。
Telvin Nguyen

7

正确的HTML方式:只需将按钮与锚元素一起并添加属性target =“ _ blank”即可。它是如此简单:

<a ng-href="{{yourDynamicURL}}" target="_blank">
    <h1>Open me in new Tab</h1>
</a>

您可以在控制器中设置的位置:

$scope.yourDynamicURL = 'https://stackoverflow.com';

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.