Hy 我有一個模擬輸入文件按鈕的div。 要做到這一點我做
angular.element('#fileInput').trigger('click');
但這產生正在進行中的錯誤已經應用,圍繞谷歌上搜索,我發現,這可能很容易避免將代碼超時內。
timeOut = $timeout(function(){
angular.element('#fileInput').trigger('click');
});
而作爲真正解決了這個問題,但$超時產生無限循環無限打開文件對話框,如果我的彈出塊被禁用的效果。在AngularJS文檔中,您可以清楚地看到$ timeout是setTimeout的一個包裝,它應該只生成一個對回調函數的調用,那麼爲什麼它會生成一個無限循環? 然而,試圖解決situtation我決定殺了第一個電話後,計時器,但我無法管理,
timeOut = $timeout(function(){
angular.element('#fileInput').trigger('click');
});
timeOut.then(function(){$timeout.cancel(timeOut);
}
);
,我十分陷在這種情況下...我我只是錯過了明顯的東西?有人有任何想法?謝謝你的
您確定觸發點擊不會以某種方式調用相同的代碼嗎?另外,你可以提供一個jsFiddle或其他東西,因爲我不確定我看到這種行爲是如何發生的 – Ian 2014-09-26 15:03:27
不確定我是否理解你的問題,但是,當我觸發點擊打開的文件對話框,如果他按下保存然後上傳被處理,否則什麼也沒有發生......我現在開始工作在小提琴上 – 2014-09-26 15:06:07
我的觀點是我懷疑'$超時'是問題的根源(除非你使用的版本是角度有一個錯誤)。我暗示有可能包含這個觸發器的代碼/函數在遞歸中被調用,導致這個問題。我不能用簡單的jsFiddle(http://jsfiddle.net/twp3e6h2/)重現,所以你將需要,否則它沒有意義 – Ian 2014-09-26 15:11:26