Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJs-在新选项卡中打开url_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngularJs-在新选项卡中打开url

Javascript AngularJs-在新选项卡中打开url,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个公共页面和管理页面的应用程序。我想在登录后在新选项卡中打开管理员页面。 我在登录成功后尝试过这个,但没有效果。正在重新加载公共页面(登录位置): var url = $state.href('/admin/overview'); $window.open(url, '_blank'); 任何提示都将不胜感激。 谢谢。这是一个工作窗口,您必须先插入$window,然后才能使用它: JS: HTML: 这是另一项工作 HTML: 你可以有一个指令为你做这件事 directives.re

我有一个公共页面和管理页面的应用程序。我想在登录后在新选项卡中打开管理员页面。 我在登录成功后尝试过这个,但没有效果。正在重新加载公共页面(登录位置):

var url = $state.href('/admin/overview');
$window.open(url, '_blank');
任何提示都将不胜感激。 谢谢。

这是一个工作窗口,您必须先插入
$window
,然后才能使用它:

JS:

HTML:


这是另一项工作

HTML:


你可以有一个指令为你做这件事

directives.redirect=函数($location、$window、$rootScope){
返回{
链接:函数(范围、元素、属性){
元素上(“单击”,函数(){
如果(!attrs.newwindow | | attrs.newwindow==false){
$location.path(属性重定向);
作用域:$apply();
}
否则{
var baseUrl=$location.$$absUrl.toString().substring(0,decodeURIComponent($location.$$absUrl).toString().indexOf($location.$$path.toString(),$location.$$absUrl.toString().indexOf(“#”)1)+attrs.redirect;
$window.open(baseUrl);
}
});
}
}

}
在新选项卡中打开链接的简单方法

 <a href="{{details.website}}" ng-click="openNewTab(details.website)"> 
    {{details.website}}
 </a>
     $scope.openNewTab = function (url) 
    {
      $window.open(url, '_blank');
     };

$scope.openNewTab=函数(url)
{
$window.open(url“_blank”);
};
在使用它之前,你应该在你的控制器中注入
$window

我用过这个,它可以工作(angular4+):


我必须将颜色恢复为默认值并覆盖浏览器的颜色。这仍然给了我零javascript代码的连锁反应和一切。

你能用小提琴重现错误并在这里发布链接吗?不幸的是不能。我不能用小提琴准确地再现代码。太复杂了,“/admin/overview”是路由名称吗?因为根据文档,您不能将该方法用于URI()。这可能是问题的一部分是的,这是一个路由名称。这可能是问题的原因。但是我找不到一个路由示例,所以我只是尝试了一下。我之前发布的链接显示了几个路由名称示例,这基本上是使用此方法的唯一方法($state.href),这在使用外部URL(如您提供的URL)时非常有效,但在尝试使用路由器ui状态(或URL)时不起作用.这里是exmaple:您的解决方案是将#放在#空白url中。使用此$location.$$absUrl.split(“#”)[0]+attrs.redirect;
<div ng-app="myApp" ng-controller="dummy"> 
    <a ng-href="" ng-click="redirectToGoogle()">Hello</a>
</div>
<div ng-controller="MyCtrl">
<a ng-href="{{url}}" target="_blank">Visit jsfiddle</a>
</div>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
    $scope.url ='http://jsfiddle.net/HB7LU/16771/';
}
 <a href="{{details.website}}" ng-click="openNewTab(details.website)"> 
    {{details.website}}
 </a>
     $scope.openNewTab = function (url) 
    {
      $window.open(url, '_blank');
     };