2016-07-20 8 views
1

Ich bin mit kleineren Problem stecken. Ich möchte Liste von Daten von API-Aufruf, bei Eingangstyp ändern Ereignis rendern. Was meine App ist, wenn der Benutzer beginnt, Eingabe-Typ eingeben, onchange-Ereignis ausgelöst wird, basierend darauf möchte ich Daten von API-Aufruf zurückgeben. Damit kann ich Autosuggestion geben und Benutzer diese Daten auswählen lassen. Grundsätzlich ist es ähnlich, wie google place autosuggest funktioniert. Ich möchte das nur in meiner eigenen Listenansicht anpassen.Angular js am Eingangstyp ändern Renderliste Daten von HTTP-Anfrage

<ion-content ng-controller="Googleplacesuggestion"> 
<h1>Search</h1> 
<label class = "item item-input"> 
<input type ="text" ng-model="search" ng-change="getGooglePlaceSuggestionAutocomplete(search)" 
     class="search-query" id="address_search" placeholder="Search"> 
</label> 
<ul class="unstyled"> 
<li ng-repeat="data in returnedData"> 
<span> {{ data }} </span> 
</li> 
</ul> 

das ist mein Controller
.controller('Googleplacesuggestion',function($scope,$http){ $scope.getGooglePlaceSuggestionAutocomplete = function($scope){ console.log($scope); $scope.returnedData = [ {text:'learn angular', done:true}, {text:'build an angular app', done:false} ];

Dank

+0

Können Sie uns zeigen, was Sie bisher versucht haben? –

+0

Ich habe den Code von Ihrem Kommentar in den Fragenkörper verschoben. Sie sollten Ihre Frage mit Code bearbeiten, anstatt den Code in Kommentaren hinzuzufügen, da Kommentare nicht permanent sind und nicht formatiert werden können. Außerdem haben Sie hier nur etwas HTML eingefügt, Sie haben jedoch kein JavaScript hinzugefügt, das die Codelogik erklärt. Sehen Sie sich an, wie Sie ein [mcve] erstellen. – Claies

+0

@LucasWatson Ich habe Codebeispiel hinzugefügt, das ich getan habe. – DeJavu

Antwort

0

Suche etwas über debouncing das ist Technik einige Zeit zu warten, bevor eine Arbeit oder super einfache Art und Weise zu tun String-Länge

+1

das fühlt sich nicht wie eine vollständige Antwort auf die Frage an. Dies könnte als Kommentar geeigneter gewesen sein. – Claies

0
zu überprüfen

Besser, um Ihren Code zu posten, aber hier würde ich basierend auf meinem Verständnis vorschlagen. onchange Event-Callback ist von Javascript und ist ein Asynchronous, von dem Angular in Ihrem Callback nicht bewusst ist, wickeln Sie den Code innerhalb der Funktion in der Methode $timeout(function() {}) Methode, die Angular erzählen wird, dass sich etwas geändert hat.

Zum Beispiel:

<input type="text" onchange="valueChanged()" /> 

In Ihrem Controller:

$scope.valueChanged = function() { 
    $timeout(function() { 
      /// your code 
    }); 
}; 

Eine weitere Möglichkeit, die ng-change Richtlinie von Angular zu verwenden, wird empfohlen, Sie auf diese Weise müssen Sie Ihren Code nicht einwickeln innerhalb des $timeout Dienstes.

Außerdem gibt es verschiedene Bibliotheken, die Ihren Autocomplete-Code zur Verfügung stellen. https://angular-ui.github.io/bootstrap/#/typeahead ist einer von ihnen, wenn Sie BootStrap verwenden.

+1

tue dies nicht; benutze 'ng-change'. Dies ist jedoch möglicherweise nicht das Problem, das der Benutzer hat, da sie nicht wirklich viel Kontext bieten .... – Claies

+0

Danke @Claies, ich habe das gleiche aktualisiert. –