Angularjs typeahead вызывает webapi

Использование AngularJS с C# webapi здесь.

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

Я настроил напечатанный текст, как показано ниже:

HTML:

  <input type="text" name="uName" ng-model="uName" autocomplete="off" required class="form-control input-medium" placeholder="Enter user name..."
   typeahead="uName for uName in getUserNames($viewValue)" />

Контроллер:

    $scope.getUserNames = function (search) {
        myService.getUserNamesFromApi(search).then(function (response) {
            $scope.foundNames = [];
            if (response.length > 0) {
                for (var i = 0; i < response.length; i++) {
                    $scope.foundNames.push({ 'uName': response[i].uName });
                }
                return $scope.foundNames;
            }
        });
    };

Данные, возвращаемые моим API, представляют собой массив, например:

0: {fName: "Adam", lName: "Smith", uName: "asmith123"},
1: {fName: "John", lName: "Bambi", uName: "jbambi456"}

И так далее...

Я пытаюсь получить часть uName и вставить ее в свой массив, а затем возвращаю этот массив. Но с этим кодом в настоящее время он ничего не показывает, никаких ошибок.

Что мне здесь не хватает?

1
0
33
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это должно быть так,

 typeahead="uName as uName.uName for uName in getUserNames($viewValue)" />
Ответ принят как подходящий

Вы пропустили возврат обещания из своей функции getUserNames. Вот как typeahead загружает асинхронную коллекцию, как только вы что-то вводите. А также вернуть $scope.foundNames; из внешнего состояния if.

$scope.getUserNames = function (search) {
    // return promise here.
    return myService.getUserNamesFromApi(search).then(function (response) {
        $scope.foundNames = [];
        if (response.length > 0) {
            for (var i = 0; i < response.length; i++) {
                $scope.foundNames.push({ 'uName': response[i].uName });
            }
        }
        // return result from here.
        return $scope.foundNames;
    });
};

Спасибо, что не хватало.

user1563677 13.09.2018 20:11

@ user1563677 Рад, что это помогло, спасибо :)

Pankaj Parkar 13.09.2018 20:15

Другие вопросы по теме