如何在Angular JS中使用href =“javascript:window.open ...”?

时间:2016-08-18 13:59:26

标签: javascript html angularjs

我正在尝试使用HTML中的标记打开一个新的模态浏览器窗口,其中包含通过Angular值检索的URL,如下所示:

<a href="javascript:OpenPopUpPage('{{listing.Linktest}}');">Test Link</a>

我的角度标记的其余部分工作正常,但上面的锚点不起作用。在我做的几次尝试中,我要么根本没有得到一个值(null),要么得到的URL被标记为“不安全”。

我已经尝试在我的控制器中调用一个方法来传回值,但同样的失败。

我是以错误的方式解决这个问题吗?

注意:OpenPopUpPage是我正在使用的内置SharePoint函数,但我也可以调用window.open或其他东西。但我认为这对这个问题并不重要。

更新:我已经创建了一个jsfiddle(警告,第一个计时器),并尝试在这里作为演示关注几个响应,但我无法让它们中的任何一个正常工作。 My jsfiddle

3 个答案:

答案 0 :(得分:0)

.controller('controllerName', ['$scope', '$window',
    function($scope, $window) {
        $scope.redirectToNewPage = function(){
            $window.open('https://www.google.com', '_blank');
        };
    }
]);

答案 1 :(得分:0)

你拥有的不是正常的链接。它更像是一个<button>,虽然它可以采用任何一种方式。

处理点击以打开新窗口的角度方式将是:

<button type="button" ng-click="$ctrl.click($event)">...</button>

并在您的角度代码中:

function Controller/Copmponent/Directive/Whatever() {
    this.url = 'http://example.com';
    this.click = function () {
        open(this.url, this.target, this.options);
    };
}

如果您的网页需要支持禁用JavaScript,或者您根本不处于角落状态,那么使用<a>元素可能是合理的,前提是您为href提供了有效的网址:

<a href="{{$ctrl.url}}" ng-click="$ctrl.click($ctrl.url, $event)">...</a>

答案 2 :(得分:0)

我想添加这个最终答案,因为虽然其他人提供了打开弹出窗口或新窗口的好例子,但主要目标是能够打开一个新窗口到一个从角度/ REST查询传递的位置值。

答案是两部分:

1)使用ng-click和控制器内部的功能/方法来处理新窗口的打开。避免尝试直接在内部使用javascript。感谢为我提供本课程的所有人。 2)此外,当将值传递给来自控制器查询输出的函数时,请不要在传递的值周围包含{{}},因为显然只是用于显示数据,而不是传递它。

所以这是结果代码:

//HTML:
    <button type="button" ng-click="foo(myController.LinkValue)">Let's Do This</button>

//Code within Controller:
$scope.foo = function(myURL) {
    open(myURL, 'popup', 'width=300,height=200');
        };