我需要異步更新鏈接的href。比方說,我有這個網站:角度異步分揀到鏈接href
<a ng-href="{{url}}" ng-click="resolveUrl()" target="_blank">click me</a>
而且這個角控制器:
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克拉斯指出,我可以使用window.open()。但我不能異步使用它,因爲瀏覽器會彈出阻止新窗口。所以我試圖打開另一個窗口點擊(未被阻止),然後在諾言解決後,我將打開的窗口的網址更新爲google.com。編輯過的plunker是here。不幸的是,這不適用於iPad。在iPad上,頁面URL不會更新,因爲在iPad上,標籤無法相互通信。 有什麼建議嗎?
所以你想要點擊產生的網址? –
你的運動員工作正常。點擊後它會解決一秒鐘。所以如果你想第一次去谷歌,然後解決另一個網址,只需將$ scope.url = www.google.com和異步功能更改爲新的。 http://plnkr.co/edit/SSnKwHKpoWCqbhISm2iq?p=preview –
@KonstantinKrass是的。問題是我需要處理一些計算(生成blob pdf),然後將blob url分配給鏈接,以便用戶可以在新選項卡中下載它。 – daerin