2

Я не могу получить свой ответ asyn для отображения в раскрывающемся списке typeahead. Ранее я думал, что это связано с медленным ответом, но, похоже, это не проблема. Я возвращаю обещание, как описано в документах, и я вижу правильный набор возвращаемых данных, но данные не отображаются. Если я верну некоторые жестко закодированные данные, это будет работать, просто не с обещанием.Угловой пользовательский интерфейс Bootstrap Typeahead - не отображаются результаты асинхронного отображения

Контроллер

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) 
    } 

шаблон

ответ

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

Блин, пропустил тот. Благодаря!! – neridaj

+0

@neridaj, что происходит, рад помочь вам, спасибо :) –