Ui.Bootstrap Typeahead не работает с асинхронным вызовом

Я использую ui.bootstrap typeahead с асинхронным вызовом. Однако полученные данные, похоже, не возвращаются к директиве typeahead, и впоследствии с данными не появляется раскрывающийся список.

HTML-код

<input type="text" ng-model="asyncSelected" placeholder="Search Profile" typeahead="username.username for username in getSearch($viewValue)" typeahead-wait-ms="400" class="form-control">

И функция JS здесь

$scope.getSearch = function (val) {

    return $sails.get("/search/" + val).success(function (response) {
        console.log(response);
        return response.map(function (item) {
            console.log(item.username);
            return item.username;
        });

    }).error(function (response) {
        console.log('The sails profile search has failed');
    });

}

Объект ответа JSON

Object
@type: "d"
id: "#17:3"
username: "Burt"
__proto__: Object

Я использую угловые паруса на клиенте для запроса бэкэнда. Я протестировал код с образцом, приведенным в документации ui.bootstrap, и все работает нормально.

$sails.get также работает, так как console.log(item.username) распечатывает значения.

У меня такое чувство, что это связано с обещанием в функции getSearch.

Любые идеи, почему выпадающий список не появляется?


person TommyK    schedule 11.04.2015    source источник


Ответы (1)


Я обновил паруса с 10.5 до 11. Впоследствии клиентский SDK изменился (Sails.io), и библиотеки angular, которые я использовал Angular-Sails, также нуждались в обновлении.

Функции обещания изменились, и мне нужно было их обновить. Изменение функции обещания на приведенную ниже устранило проблему. Теперь функция typeahead получает ответ, и появляется раскрывающийся список.

    return $sails.get("/search/" + val)
        .then(function (response) {
            console.log(response);
            return response.data.map(function (item) {
                return item.username;
            });
        }, function (response) {
            alert('Houston, we got a problem!');
        });
person TommyK    schedule 12.04.2015
comment
В моем случае функция обещания работает, но возвращаемые данные почему-то не попадают в раскрывающийся список. Но я проверил со статическими данными, все работает нормально. - person Dewsworld; 20.07.2015