如何使用$ location,angular在浏览器中打开新标签?

时间:2013-12-28 21:09:11

标签: angularjs

我有控制器'reportCtrl'和HTML,它代表6个包含数据的表,而且只显示我一次显示的几行。

app.js

var appReport = angular.module('myAppReport', []);

appReport.config(['$routeProvider', function($routeProvider) {
            $routeProvider.when('/showreport', {templateUrl: 'app/reports/reportsView.html', controller: 'reportCtrl'});
            $routeProvider.when('/showreport/:type', {templateUrl: 'app/reports/reportsView.html', controller: 'reportCtrl'});

每个表都有一个按钮,点击后,应该在浏览器中打开带有扩展表的新选项卡:

scope.onClick = function(path){
    var real_path = $location.path() + '/' + path + '/';
    $location.path( real_path );
    // $window.open($location.path()); // doesn't work
};

例如,我有根视图网址:

http://dev.test.com/reports/date/#/showreport

现在,按下按钮后我想创建:

http://dev.test.com/reports/date/#/showreport/table_name

并在新标签中将其打开。如您所见,我尝试了$window.open($location.path());,但它不起作用,没有任何反应。

谢谢,

8 个答案:

答案 0 :(得分:23)

您正在使用另一个可能使Angular混淆的函数打开一个新窗口。

尝试在$window.open(real_path)中传递字符串,其中real_path是包含您要导航的路径的字符串

答案 1 :(得分:17)

如果要在ctrl +单击或同一选项卡中的新选项卡中打开角度页面,请尝试以下操作: -

HTML:

<a ng-click="navigationUrl($event)">My Link</a>

JS:

    var navigationUrl = function (event) {
            if (event.ctrlKey) {
                window.open(url, '_blank'); // in new tab
            } else {
                $location.path(url); // in same tab
            }
        };

答案 2 :(得分:4)

还有一个选择是使用ng-href

HTML:

 <a  ng-href="#/courses/{{employee.courseId}}/employees/{{employee.id}}" 
      target="_blank"> {{employee.employeeNumber}}
 </a>

其中url基于您要重定向的位置

答案 3 :(得分:1)

要在新窗口中打开新视图,请执行以下代码:

window.open($location.$$absUrl.replace($location.$$path,NEW_PATH), '_blank');

答案 4 :(得分:1)

尽管这里投票最多的答案可能适用于大多数场景,但我想添加我发现的实现OP所需的方式(我也需要它):

var viewPath = '/InsideMyView';
var currentPath = window.location.href.substr(0, window.location.href.indexOf('#') + 1);
var fullPath = currentPath + viewPath;
$window.open(fullPath, '_blank');

解释:您只需要获取应用的根网址,然后您可以在网址中使用#(由angular添加),然后连接视图获取完整网址的路径。

答案 5 :(得分:0)

这对我有用。

HTML: <div ng-click="OpenBrowserInNewTab(someKeyValue)"</div>Click Me </div>

控制器:

`$scope.OpenBrowserInNewTab = (someKeyValue) ->
    tabWindowId = window.open('/abcdef/ghijk/' + someKeyValue + '', _blank')

    $http.post("/abcdef/ghijk/#someKeyValue", data).then (response) ->
        tabWindowId.location.href = response.headers('Location')
        return
    return`    

答案 6 :(得分:0)

在带有角度参数

的新标签页中打开视图
   <a  target="_blank" class="btn" data-ng-href="@Url.Action("Hotel", "Home")?hotelCode={{hotel.code}}"> Click Hear</a>

答案 7 :(得分:0)

尝试这个?

window.open(yourURL+'create-account',)

window.open默认在新标签页中打开链接