2016-06-06 18 views
0

Erstellen einer Autocomplete-Funktion mit Elasticsearch und AngularJS UI bootstrap typeahead. Fast fertig, aber ich habe Probleme, die Ergebnisse im Drop-down anzuzeigen.Elasticsearch Autocomplete mit AngularJS typeahead

Was zur Zeit in der Dropdown-Liste angezeigt wird, wenn ich die Buchstaben a drücken und ich weiß, gibt es Vorschläge für diesen Brief ist:

[object Object] 

Dies ist mein Controller-Code

$scope.getSuggestions = function(query) { 
$scope.isSearching = true; 
return searchService.getSuggestions(query).then(function(es_return){ 
    var phrases; 
    var phrases = es_return.hits.hits; 
    return $scope.autocomplete.suggestions = phrases; 
    $scope.isSearching = false; 
    }); 
}; 

Und das ist meine hTML-Formular

<form ng-submit="search()" class="form-horizontal col-md-8 col-md-offset-2" id="hp-search-form"> 

ich eine ES match_phrase_prefix Abfrage bin mit gekoppelt mit einem Shingles Analysator, der gut arbeitet - Ergebnisse in Sense erwartet zu werden. Wenn ich zum Sense-Plugin für ES gehe, bekomme ich viele Antworten zurück, wenn ich "a" tippe, damit ich den ES-Teil dieser Arbeit kenne. Wo gehe ich falsch mit UI Bootstrap Typahead?

Antwort

0

Es gibt zwei Probleme mit Ihrem Ansatz, unter Berücksichtigung der folgenden Codezeilen:

return $scope.autocomplete.suggestions = phrases; 
$scope.isSearching = false; 
  • Die erste Zeile wird über die phrases als ein Array, so dass Sie [object Object] als Ausgabe erhalten werden. Ersetzen Sie es mit phrases[0] oder überprüfen Sie Ihre Konsole auf was es zurückgibt.
  • Die zweite Zeile wird nie ausgeführt werden, da es die Steuerung an den Aufrufer zurückgibt, bevor es ausgeführt wird. Das ist eine verwaiste Anweisung.

So Ihren Code ändern:

$scope.isSearching = false; 
return $scope.autocomplete.suggestions = phrases[0]; // Verify this with console. 
+0

Ich tat, wie Sie vorgeschlagen und in der Dropdown nicht mehr angezeigt. Die Vorschläge sind da (ich überprüfte die Konsole), aber nun wird auch das Dropdown-Menü nicht mehr angezeigt .... – user3125823

+0

@ user3125823 Was gibt es in den 'Phrasen'? Das ist das Problem, glaube ich. Den Code zurückverwandeln und sehen, was in den Phrasen drin steht? 'console.log (Phrasen)' oder so? –

+0

ok wird, danke für deine hilfe – user3125823

Verwandte Themen