2017-01-03 3 views
1

Ich habe seit einiger Zeit Probleme damit, und ich kann nirgends eine Lösung finden, im Grunde versuche ich ein Klickereignis für einen Eingabedateityp auszulösen, aber dieses Ereignis muss innerhalb eines Versprechens ausgelöst werden, wenn ich Versuchen Sie, das Ereignis direkt innerhalb der Versprechen auszulösen die Konsole protokolliert einen Fehler mit der Aufschrift "Digest in Progress" Wenn ich ein Timeout innerhalb der Versprechen setzen, verschwindet der Fehler, aber das Ereignis wird nicht ausgelöst, die einzige Möglichkeit, die ich gemacht habe, ist durch ein Timeout für etwa eine Sekunde vor dem Versprechen geben, aber ich mag wirklich nicht auf einem definierten Timeout dieses Ereignis verlassen siehtWie kann ich ein Click-Ereignis (bei einer Dateityp-Eingabe) in einem Versprechen auslösen?

der Controller so etwas wie diese

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

     }); 
} 

Diese Funktion wird ausgelöst, wenn diese Texteingabe Doppel

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

Eingang Dies ist eine Datei geklickt wird, die

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

Das Ereignis ausgelöst werden, so muss innerhalb der Versprechen ausgelöst werden muss, weil die Ergebnis der async-Funktion bestimmt, ob auf die Eingabedatei geklickt wird oder eine andere Aktion ausgeführt wird. Die handleDblClick-Funktion behandelt verschiedene Aktionen auf der Grundlage der Antwort des Versprechens, und eine dieser Aktionen umfasst das Öffnen eines Dateiexplorers zum Auswählen eines Datei

+0

Wie sieht Ihr Controller aussehen lassen? Und deine Komponente mit der Dateieingabe? –

+0

fügen Sie den entsprechenden Code auch hinzu. – raj

+0

Ich habe den relevanten Teil hinzugefügt, wo mein Hauptproblem ist, und einige weitere Erklärungen –

Antwort

0

Ich fand meine eigene Antwort, stellt sich heraus, dass Java-Skript nur das Dialogfeld eines Eingabedateielements auslösen wird, wenn es von einem Ereignishandler kommt, der vom Benutzer ausgelöst wurde und ihm vertraut werden muss :) Danke!

Ich werde den Link hier

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

Verwandte Themen