jack
jack

Reputation: 77

typeahead function does not return values from my JSON

The script will not just return the values I require from my JSON. I require name from JSON
The following generates an auto suggest when I type in some value in the input field. Reference: http://plnkr.co/edit/08vi4ncjLrWfUBjWrZKS?p=preview

However, this does not return any JSON values in my code:

           <script>
            var app = angular.module('myApp', ['ui.bootstrap']);
            app.controller('myController', function($scope, $http){
                $scope.getAirport = function(inp){
                    return $http.get('https://raw.githubusercontent.com/vedvasa/airports/master/airports.json', {
                      params: {
                        name : inp,
                        sensor : false
                      }

                    }).then(function(res){
                        var names = [];
                        angular.forEach(response.data.records, function(item){
                          names.push(item.addedNames);
                        });
                        return names;
                      });
                };

                      $scope.on_item_selected=function($item, $model, $label)
                      {
                          $scope.selected_item = $item;
                      }
            });
            </script>



            <div ng-app="myApp" ng-controller="myController">

                <form>
                    <input type="text" class="form-control" id="source" placeholder="Enter Airport Code or City Name" ng-model="asyncSelected" typeahead="name for name in getAirports($viewValue)" typeahead-loading="loadingAirports" typeahead-on-select="on_item_selected($item, $model, $label)">
                </form>

            </div>

Upvotes: 0

Views: 24

Answers (1)

Sergio Rivas
Sergio Rivas

Reputation: 563

Your are using response instead of res

       <script>
        var app = angular.module('myApp', ['ui.bootstrap']);
        app.controller('myController', function($scope, $http){
            $scope.getAirport = function(inp){
                return $http.get('https://raw.githubusercontent.com/vedvasa/airports/master/airports.json', {
                  params: {
                    name : inp,
                    sensor : false
                  }

                }).then(function(response){ // <---- I changed this to response
                    var names = [];
                    angular.forEach(response.data.records, function(item){
                      names.push(item.addedNames);
                    });
                    return names;
                  });
            };

                  $scope.on_item_selected=function($item, $model, $label)
                  {
                      $scope.selected_item = $item;
                  }
        });
        </script>



        <div ng-app="myApp" ng-controller="myController">

            <form>
                <input type="text" class="form-control" id="source" placeholder="Enter Airport Code or City Name" ng-model="asyncSelected" typeahead="name for name in getAirports($viewValue)" typeahead-loading="loadingAirports" typeahead-on-select="on_item_selected($item, $model, $label)">
            </form>

Upvotes: 1

Related Questions