2017-01-03 43 views
1

我一直有這個問題一段時間,我找不到解決方案的任何地方,基本上我試圖觸發一個輸入文件類型的點擊事件,但這個事件需要在承諾內觸發,當我嘗試直接在承諾內觸發事件控制檯記錄一個錯誤,說「摘要正在進行」 如果我在承諾內放置超時,錯誤消失,但事件沒有觸發,我做這項工作的唯一方法是通過添加一個超時的承諾外約一秒鐘,但是我真的不希望在一個規定的超時依靠此事件如何在承諾內觸發單擊事件(在文件類型輸入上)?

控制器看起來像這樣

scope.handleDblClick = function() { 
    asyncFunction() 
     .then(function (response){ 
      switch(response){ 
       case 'option1': 
        //do something 
        break; 
       case 'option2': 
        document.getElementById('fileInputId').click(); 
        break; 
      } 

     }); 
} 

當這個文本輸入被雙點擊

<input type="text" ng-dblclick="handleDblClick()"/> 

這是一個文件輸入,需要承諾

<input type="file" id="fileInputId"/> 

事件需要觸發這種方式,因爲裏面被觸發該功能被觸發異步函數的結果決定了輸入文件是否將被點擊或採取其他操作,handleDblClick函數根據promise的響應處理不同的操作,其中一個操作包括打開文件資源管理器以選擇檔案

+0

什麼是你控制器是什麼樣子?而你的組件與文件輸入? –

+0

也添加相關的代碼。 – raj

+0

我已經添加了相關部分,我的主要問題是,以及一些更多的解釋 –

回答

0

我發現我自己的答案,事實證明,java腳本只會觸發輸入文件元素的對話框,如果它來自用戶觸發的事件處理程序,並且它必須受信任:)謝謝!

我會離開這裏的鏈接

https://github.com/angular/material/issues/8639

相關問題