2016-04-14 2 views
0

Ich möchte eine MD-Autocomplete erstellen, aber ich kann die Optionen nicht zeigen. Zeigt immer die Fehlermeldung an, die nur gestartet werden sollte, wenn keine Optionen für die Eingabe vorhanden sind.
Mein Dienst wird korrekt zurückgegeben und mein Controller kehrt erst nach Erhalt der Servicedaten zurück.md-autocomplete warten keine Daten von einem Dienst. Wie löst man?

HTML:

<md-autocomplete placeholder="Postal-Code" 
       md-selected-item="selectedItem" 
       md-no-cache="true" 
       md-search-text="searchText" 
       md-items="item in welcomeScope.getPostalCode(searchText)" 
       md-item-text="item.cp4Code"> 
    <md-item-template> 
    <span md-highlight-text="searchText">{{item.cp4Code}}</span> 
    </md-item-template> 
    <md-not-found> 
    ERROR 
    </md-not-found> 
</md-autocomplete> 

Controller:

welcomeScope.getPostalCode = function (key){ 
    welcomeSvc.getAllPostalCodes(key).then(function(data){ 
    return data.result.returnvalue; 
}); 

Service:

var getAllPostalCodes = function(key){ 
     return Restangular.all(...).post(JSON.stringify()).then(function(response){ 
      var obj = angular.fromJson(response); 
      if (!obj.isError) { 
       return obj; 
      } 
      else{ 
       console.log("ERROR!"); 
      } 
     }); 
}; 

Ein Beispiel Ergebnis im Controller zurückgegeben wird:

[ 
    {"id":00001,"cp4Code":"1000","cp3Code":"111","postalDesignator":"aaaaa"}, 
    {"id":00002,"cp4Code":"1000","cp3Code":"112","postalDesignator":"bbbbb"}, 
    ...  
] 

Antwort

0

welcomeScope.getPostalCode hat keinen Rückgabewert, die Rückkehr von innen ein Versprechen hat keinen Einfluss auf die äußere Funktion. Einrückungen macht dies etwas klarer, wie folgt aus:

welcomeScope.getPostalCode = function (key){ 
    welcomeSvc.getAllPostalCodes(key).then(function(data){ 
     return data.result.returnvalue; 
    }); 
}; 

Wenn Sie nicht das Versprechen kehren aus welcomeSvc.getAllPostalCodes dann md-autocomplete keine Möglichkeit hat, die Ergebnisse zu bekommen.

welcomeScope.getPostalCode = function (key){ 
    return welcomeSvc.getAllPostalCodes(key).then(function(data){ 
     return data.result.returnvalue; 
    }); 
};