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

nep*_*une 75 javascript angularjs

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

openTab = function () {
  $http.post('www.google.com');
}
Run Code Online (Sandbox Code Playgroud)

我想要的是发布一个require并在单击"openTab"按钮时在新选项卡中打开响应html.没有方法可以做到这一点$http.我认为这可能很简单,但我找不到办法.

Aar*_*ron 172

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

为了使这项工作将$ window注入你的控制器,如下所示

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

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

  • Chrome会锁定此弹出窗口.如何识别它已锁定并通知用户? (2认同)

nep*_*une 21

我这样解决了这个问题.

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

$scope.openTab = function() {
    $scope.url = 'www.google.com';
}
Run Code Online (Sandbox Code Playgroud)


Ren*_*tin 5

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

<a ng-href="{{yourDynamicURL}}" target="_blank">
    <h1>Open me in new Tab</h1>
</a>
Run Code Online (Sandbox Code Playgroud)

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

$scope.yourDynamicURL = 'https://stackoverflow.com';
Run Code Online (Sandbox Code Playgroud)