2

タイプアヘッドドロップダウンに表示するasyn応答を取得できません。私はこれまで、応答が遅いと考えていましたが、これは問題ではないようです。ドキュメントに記載されている約束を返しています。正しいデータセットが返されているのがわかりますが、データは表示されません。ハードコードされたデータを返すと、それはうまくいっています。角度UIブートストラップ先読み - 非同期結果が表示されない

コントローラ

function searchAuditLog(searchValue) { 
    var params = angular.copy(vm.params); 
    params.campaign_name = searchValue; 
    var qsParams = $httpParamSerializer(params); 
    // return [ // This works 
    // 'DRAFT 1', 
    // 'DRAFT 2', 
    // 'DRAFT 3' 
    // ]; 
    myapi.searchAuditLog(qsParams) 
    .then(function(results){ 
     return results; // This doesn't 
    }); 
    } 

工場

function searchAuditLog(qs) { 
    return $http.get(myapi + '/1.0/audit?' + qs) 
    .then(function(response) { 
     return response.data.results.map(function(item){ 
     return item.metadata.campaign_name; 
     }); 
    }) 
    .catch(getFailed) 
    } 

テンプレート

<input type="text" ng-model="vm.selectedEvents" placeholder="{{ 'idm.search' | translate }}" class="form-control" uib-typeahead="query for query in vm.searchAuditLog($viewValue)" class="form-control" typeahead-show-hint="true" typeahead-min-length="3" typeahead-on-select="vm.changeSearch($item, $model, $label, $event)" typeahead-no-results="vm.noSearchResults"> 
<i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i> 
<div ng-show="noResults"> 
    <i class="glyphicon glyphicon-remove"></i> No Results Found 
</div> 

答えて

3

非同期型の先行技術では、オプションで非同期dataを表示することを約束するオブジェクトが必要です。コントローラーのsearchAuditLog関数も約束を返して、データがtypeaheadの内部に取り込まれるようにする必要があります。

コントローラ

function searchAuditLog(searchValue) { 
    var params = angular.copy(vm.params); 
    params.campaign_name = searchValue; 
    var qsParams = $httpParamSerializer(params); 
    //return promise from here 
    return myapi.searchAuditLog(qsParams) 
    .then(function(results){ 
     return results; 
    }); 
} 
+0

くそー、その1を逃しました。ありがとう!! – neridaj

+0

@neridajは起こる、あなたを助けてうれしい、ありがとう:) –

関連する問題