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

Kev*_*edy 69 javascript angularjs

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

使用jQuery我会这样做:

jQuery("a.openInNewWindow").click( function() {
    window.open(this.href);
    return false;
})
Run Code Online (Sandbox Code Playgroud)

是否与AngularJS等效?

m59*_*m59 76

这是一个将添加target="_blank"<a>具有href属性的所有标记的指令.这意味着他们将在一个新窗口中打开.请记住,Angular中的指令用于任何dom操作/行为.现场演示(点击).

app.directive('href', function() {
  return {
    compile: function(element) {
      element.attr('target', '_blank');
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

这是相同的概念,具有较小的侵入性(因此它不会影响所有链接)和更具适应性.您可以在父元素上使用它以使其影响所有子链接.现场演示(点击).

app.directive('targetBlank', function() {
  return {
    compile: function(element) {
      var elems = (element.prop("tagName") === 'A') ? element : element.find('a');
      elems.attr("target", "_blank");
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

老答案

看起来你只想"target="_blank"在你的<a>标签上使用它.这有两种方法:

<a href="//facebook.com" target="_blank">Facebook</a>
<button ng-click="foo()">Facebook</button>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

var app = angular.module('myApp', []);

app.controller('myCtrl', function($scope, $window) {
  $scope.foo = function() {
    $window.open('//facebook.com');
  };
});
Run Code Online (Sandbox Code Playgroud)

现场演示(点击).

以下是Google文档$window:http://docs.angularjs.org/api/ng.$window

您可以使用window,但最好使用依赖注入,传入角度$window以进行测试.


Fil*_*nko 45

这个对我有用.将$window服务注入控制器.

$window.open("somepath/", "_blank")
Run Code Online (Sandbox Code Playgroud)


Sam*_*Sam 36

您可以使用:

$window.open(url, windowName, attributes);
Run Code Online (Sandbox Code Playgroud)

  • 虽然你像$期望一样使用$ window,但这个答案实际上不包括如何绑定,这是操作问题的一部分(它没有说明如何将`jQuery(..)`思考转换为ng. (2认同)

nur*_*azi 10

这是你的按钮的代码

<a href="AddNewUserAdmin" 
   class="btn btn-info " 
   ng-click="showaddnewuserpage()">
  <span class="glyphicon glyphicon-plus-sign"></span> Add User</a>
Run Code Online (Sandbox Code Playgroud)

在控制器中只需添加此功能.

 var app = angular.module('userAPP', []);

app.controller('useraddcontroller', function ($scope, $http, $window) {

$scope.showaddnewuserpage = function () {

    $window.location.href = ('/AddNewUserAdmin');
}

});
Run Code Online (Sandbox Code Playgroud)