我正在尝试使用HTML中的标记打开一个新的模态浏览器窗口,其中包含通过Angular值检索的URL,如下所示:
<a href="javascript:OpenPopUpPage('{{listing.Linktest}}');">Test Link</a>
我的角度标记的其余部分工作正常,但上面的锚点不起作用。在我做的几次尝试中,我要么根本没有得到一个值(null),要么得到的URL被标记为“不安全”。
我已经尝试在我的控制器中调用一个方法来传回值,但同样的失败。
我是以错误的方式解决这个问题吗?
注意:OpenPopUpPage是我正在使用的内置SharePoint函数,但我也可以调用window.open或其他东西。但我认为这对这个问题并不重要。
更新:我已经创建了一个jsfiddle(警告,第一个计时器),并尝试在这里作为演示关注几个响应,但我无法让它们中的任何一个正常工作。 My jsfiddle
答案 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');
};