Angularjs$在新选项卡中打开链接

Angularjs$在新选项卡中打开链接,angularjs,angular-ui-router,angular-ui,Angularjs,Angular Ui Router,Angular Ui,我正在尝试使用$state.go函数实现“在新选项卡中打开链接”函数。如果有这样的smth,那就太棒了: $state.go('routeHere', { parameter1 : "parameter" }, { reload : true, newtab : true // or smth like target : "_blank" }); 使用AngularJS有什么方法可以做到这一点吗?我刚刚尝试过这个——显然,添加target=“\u blank”可

我正在尝试使用$state.go函数实现“在新选项卡中打开链接”函数。如果有这样的smth,那就太棒了:

$state.go('routeHere', {
    parameter1 : "parameter"
    }, {
    reload : true,
    newtab : true // or smth like target : "_blank"
});
使用AngularJS有什么方法可以做到这一点吗?

我刚刚尝试过这个——显然,添加
target=“\u blank”
可以与
ui sref
一起工作:

<a ui-sref="routeHere" target="_blank">A Link</a>
链接

省去了向控制器添加代码的麻烦,并为您提供了悬停时的URL,就像任何普通链接一样。双赢

如果您的应用程序位于子文件夹中,它可能无法在localhost上运行。 事实上,我也有同样的问题

我在网上尝试过,通过使用以下工具,效果如预期:

<a ui-sref="routeHere" target="_blank">Link</a>
链接

更新:好的,我刚刚用以下代码解决了这个问题:

var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');
试试这个


我有一个类似的问题,如果以前的答案对您无效,请尝试此方法

var url = '#' + $state.href('preview');
window.open(url,'_blank');
因此,基本上在本地主机中工作时,没有附加
'#'
,它只是重定向到

本地主机/预览

,而不是

localhost/Project_Name/#/preview

我在这里不是为了传递数据,只是为了在新选项卡中打开$state

ui-sref="routeHere" href=""target="_blank"
这个代码解决了我的问题


在锚定标记中使用此选项。

我找到的最佳答案是扩展ui.router,因为该功能不存在内置。 您可以在此处找到完整的详细信息:

但是,以下是我对需要执行的操作的简短说明,请将此添加到app.js或angular app init文件:

angular.module("AppName").config(['$provide', function ($provide) {
    $provide.decorator('$state', ['$delegate', '$window',
        function ($delegate, $window) {
            var extended = {
                goNewTab: function (stateName, params) {
                    $window.open(
                        $delegate.href(stateName, params, { absolute: true }), '_blank');
                }
            };
            angular.extend($delegate, extended);
            return $delegate;
        }]);
}]);
在您的代码中

您将能够做到:

$state.goNewTab('routeHere', { parameter1 : "parameter"});

问题中的编辑说您用以下代码解决了它,这似乎是多余的。也就是说,你选择了它作为你接受的答案,这暗示了这一点。修复了,删除了编辑。你可以在这里找到答案,这只适用于一个问题。“target”显然不适用于其他元素。i、 e ALink@Luis按钮没有目标属性,所以不会work@Luis也许您可以使用按钮相关的类和角色作为锚定标记的按钮,使其看起来像一个按钮。例如:
一个链接
对于最佳实践来说,那不应该是$window吗?你确定该参数可以传递到新的window吗?是的@elaijuh他们会的passed@alex我想定位一个已定义的窗口,所以我尝试了window.open(url,'myWindow');但它不起作用。有什么帮助吗?请注意,如果您确实以这种方式从javascript打开链接,并且基本url发生了变化,那么浏览器很可能会阻止它,说站点试图打开弹出窗口,但如果用户接受或授权您的网站这样做,那么它就会工作。这与此无关,我没有说我需要为我调用的路由添加参数,我说我想在一个新标签中打开这条路线。这可能与许多人有关。我刚用过这个。这里要提到的一点是,参数名应该用单引号引起来。