我正在尝试使用$ state.go函数实现“在新标签页中打开链接”功能。如果有这样的东西,那就太棒了:
$state.go('routeHere', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
有什么办法可以使用AngularJS做到这一点?
我正在尝试使用$ state.go函数实现“在新标签页中打开链接”功能。如果有这样的东西,那就太棒了:
$state.go('routeHere', {
parameter1 : "parameter"
}, {
reload : true,
newtab : true // or smth like target : "_blank"
});
有什么办法可以使用AngularJS做到这一点?
Answers:
更新:好的,我只是使用以下代码解决了它:
var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');
我只是尝试了这一点-显然,添加target="_blank"
了以下内容ui-sref
:
<a ui-sref="routeHere" target="_blank">A Link</a>
省去了向控制器添加代码的麻烦,并且像任何普通链接一样为您提供了悬停时的URL。双赢!
<a ui-sref="routeHere" target="_blank" class="btn btn-primary" role="button">A Link</a>
我遇到了类似的问题,如果以前的答案对您没有任何帮助,请尝试此操作。
var url = '#' + $state.href('preview');
window.open(url,'_blank');
因此,基本上,在localhost中工作时,不附加'#'
它只是重定向到
本地主机/预览
, 代替
本地主机/项目名称/#/预览
我这里不打算传递数据,只是在新选项卡中打开$ state。
如果您的应用程序位于子文件夹中,则它可能无法在localhost上运行。我实际上有同样的问题。
我已经在网上尝试过,并且可以使用以下方法按预期工作:
<a ui-sref="routeHere" target="_blank">Link</a>
我发现最好的答案是扩展ui.router,因为该功能不内置。您可以在这里找到完整的详细信息:
扩展Angular 1.x ui路由器的$ state.go
但是,这是我对需要完成的工作的简短说明,将其添加到app.js或angular app初始化文件中:
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"});
ui-sref="routeHere" href=""target="_blank"
这段代码解决了我的问题。
在锚标记中使用它。
试试这个!
<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>