Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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在新窗口中打开链接_Javascript_Angularjs - Fatal编程技术网

Javascript 使用AngularJS在新窗口中打开链接

Javascript 使用AngularJS在新窗口中打开链接,javascript,angularjs,Javascript,Angularjs,有没有办法告诉AngularJS,当用户点击链接时,我希望在新窗口中打开链接 使用jQuery,我可以这样做: jQuery("a.openInNewWindow").click( function() { window.open(this.href); return false; }) AngularJS是否有等效物?您可以使用: $window.open(url, windowName, attributes); 这里有一条指令,将target=“\u blank”添加到

有没有办法告诉AngularJS,当用户点击链接时,我希望在新窗口中打开链接

使用jQuery,我可以这样做:

jQuery("a.openInNewWindow").click( function() {
    window.open(this.href);
    return false;
})
AngularJS是否有等效物?

您可以使用:

$window.open(url, windowName, attributes);

这里有一条指令,将
target=“\u blank”
添加到所有

app.directive('href', function() {
  return {
    compile: function(element) {
      element.attr('target', '_blank');
    }
  };
});
app.directive('targetBlank', function() {
  return {
    compile: function(element) {
      var elems = (element.prop("tagName") === 'A') ? element : element.find('a');
      elems.attr("target", "_blank");
    }
  };
});
这是一个同样的概念,它的侵入性更小(因此不会影响所有链接),适应性更强。可以在父元素上使用它,使其影响所有子链接

app.directive('href', function() {
  return {
    compile: function(element) {
      element.attr('target', '_blank');
    }
  };
});
app.directive('targetBlank', function() {
  return {
    compile: function(element) {
      var elems = (element.prop("tagName") === 'A') ? element : element.find('a');
      elems.attr("target", "_blank");
    }
  };
});
旧答案 似乎您只需要在
上使用
“target=“\u blank”

以下是
$window
的文档:


您可以只使用
window
,但最好使用依赖注入,传入angular的
$window
进行测试。

@m59指令适用于ng bind html,您只需等待
$viewContentLoaded
完成即可

app.directive('targetBlank', function($timeout) {
  return function($scope, element) {
    $scope.initializeTarget = function() {
      return $scope.$on('$viewContentLoaded', $timeout(function() {
        var elems;
        elems = element.prop('tagName') === 'A' ? element : element.find('a');
        elems.attr('target', '_blank');
      }));
    };
    return $scope.initializeTarget();

  };
});

这是您按钮的代码

<a href="AddNewUserAdmin" 
   class="btn btn-info " 
   ng-click="showaddnewuserpage()">
  <span class="glyphicon glyphicon-plus-sign"></span> Add User</a>
它对我有用。 将
$window
服务注入控制器

$window.open("somepath/", "_blank")

我写了一个小要点,我认为它对任何寻求解决该问题的方法的人都非常有帮助:

它所做的是将
target=“\u blank”
属性添加到将链接到与当前域不同的域的锚元素。
你可以将它修补到任何你认为合适的地方。

我已经浏览了许多链接,但这个答案对我帮助很大:

$scope.redirectPage=函数(数据){
$window.open(数据“弹出”,“宽度=1000,高度=700,左侧=300,顶部=200”);
};


**数据将是您点击的绝对url。

尽管您使用$window,但这个答案实际上不包括如何绑定,这是ops问题的一部分(它没有显示如何转换
jQuery(…)
考虑ng。有没有办法让它在使用
ng bind html插入的html上工作?我不确定。我猜出于安全目的,指令在ng bind html中不起作用。
$timeout(function(){$('.content a').attr('target','u blank'),0)
如果你想将此与
$http
承诺联系起来?@Snekse你的问题不够具体,无法回答,但听起来你应该使用
ui路由器
。这就是我一直在寻找的角度。:)
$window.open("somepath/", "_blank")