2016-08-18 140 views
0

我试图使用HTML的标签中打开一个新的模式浏览器窗口的URL是通过一个角度值检索,像这样:如何在Angular JS中使用href =“javascript:window.open ...”?

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

我的角度标记的其余部分工作得很好,但上述锚点不起作用。在我做出的几次尝试中,我根本没有得到任何值(空),或者生成的URL被标记为“不安全”。

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

我该怎么做呢?

注:OpenPopUpPage是内置的,我使用的SharePoint功能,但我也可以同样调用window.open或别的东西。但我认为这对这个问题并不重要。

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

+0

能否请您做一个小提琴和分享我们检查你的代码的链接? –

+0

可能我建议不要使用'javascript:'?它会让事情变得更容易......少一些额外的逃脱去做。 – Brad

回答

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一个有效的URL:

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

谢谢你的回应。我试图在这个jsfiddle中使用你的回应。你能看到我要去哪里吗? http://jsfiddle.net/planetparker28/7z7uttnb/5/ –

+0

@JimParker,[很多小东西](http://jsfiddle.net/xoggxyyn/1/)。 – zzzzBov

+0

感谢代码示例@zzzzBov。我更喜欢解决方案。但是,我怎样才能取得这个样本,并使得URL不是硬编码到控制器中,而是通过来自我的REST调用的角度值传递给控制器​​?我尝试更新小提琴来展示我的意思,但打破了它:-) –

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

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

答案是两部分:

1)使用毫微克单击连同您的控制器来处理新窗口的打开里面的函数/方法。避免尝试直接在JavaScript中使用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'); 
     };