2016-04-26 12 views
3

Ich implementiert jQuery Autocomplete mit AngularJS.element.trigger() funktioniert nicht in IE

app.directive("autoComplete", function ($timeout) { 
     return { 
      restrict: "A", 
      link: function (scope, element) { 
       var location = ["OMAHA, NE", "OMAHA, TX", "DALLAS, TX", "DALLAS, NE"]; 

       element.autocomplete({ 
        source: location, 
        autoFocus: true, 
        delay: 0, 
        minLength: 3, 
        select: function() { 
         $timeout(function() { 
          element.trigger("input"); 
         }, 0); 
        } 
       }); 
      } 
     } 
    }); 

Vor, die automatische Vervollständigung Wert von Drop-Down ausgewählt konnte nicht ngModel (JSFiddle example) übergeben werden. Dann habe ich element.trigger("input"); hinzugefügt, und alles funktioniert gut (in Chrome oder Firefox).

Allerdings besteht das Problem immer noch in IE (ich verwende IE 11). Wenn der Autocomplete-Wert in der Dropdown-Liste mit "Enter" oder "Left Click" oder "Tab" ausgewählt wird, kann er nicht an ngModel übergeben werden. Also der Grund ist element.trigger("input"); irgendwie funktioniert nicht in IE.

Jede Hilfe wird geschätzt. Vielen Dank!

Antwort

1

Die Lösung lautet:

select: function() { 
    $timeout(function() { 
     //Assign the selcted value to ngModel: scope.<ngModelValue> = <selectedValue>; 
    }, 0); 
}