我需要异步更新链接的 href。假设我有以下 HTML:
<a ng-href="{{url}}" ng-click="resolveUrl()" target="_blank">click me</a>
还有这个Angular控制器:
app.controller('MainCtrl', function($scope, $q) {
$scope.url = '#';
$scope.resolveUrl = function() {
async().then(function(resolvedUrl){
$scope.url = resolvedUrl;
});
}
function async() {
var deffered = $q.defer();
setTimeout(function() {
deffered.resolve('http://www.google.com');
}, 1000)
return deffered.promise;
}
});
即使是第一次,我也需要链接跳转到google.com。如何同步异步调用或如何分配URL以便异步函数解决?
编辑:
正如@Konstantin Krass所指出的那样,我可以使用window.open()。但是,我无法异步使用它,因为浏览器将阻止弹出新窗口。因此,我尝试在单击后打开另一个窗口(不被阻止),然后在承诺解决后更新打开窗口的URL到google.com。编辑plunker在这里。不幸的是,这在iPad上不起作用。在iPad上,页面URL未更新,因为在iPad上,选项卡无法相互通信。有什么想法吗?