Ошибка AngularJS Typeahead при возврате результатов

У меня есть следующий код, который использует AngularJS и виджет Angular Bootstrap Typeahead. Проблема в том, что он возвращает только длину свойства ошибки 'undefined'. Любая помощь будет оценена по достоинству.

HTML

<h4>Asynchronous results</h4>
 <pre>Model: {{asyncSelected | json}}</pre>
  <input type="text" ng-model="asyncSelected" placeholder="Patients loaded via $http" typeahead="result.patient.drug.drugindication for result in getPatient($viewValue)" typeahead-loading="loadingPatients" class="form-control">
 <i ng-show="loadingPatients" class="glyphicon glyphicon-refresh"></i>

Javascript

$scope.getPatient = function(val) {
return $http.get('https://api.fda.gov/drug/event.json', {
  params: {
    search: 'patient.drug.drugindication:' + val
  }
}).then(function(response){
    //the following console log returns the data just fine
    console.log(response.data.results)
  return 
  { 
    result: response.data.result
  }
});
};

Ошибка:

TypeError: невозможно прочитать свойство «длина» неопределенного




Ответы (2)


Это означает, что ответ вашего сервера не содержит запрошенных данных, если вы введете адрес браузера

https://api.fda.gov/drug/event.json?patient.drug.drugindication=a

вы видите только сообщение об ошибке

person sylwester    schedule 27.02.2015

Во-первых, проверьте эту ссылку https://api.fda.gov/drug/event.json?search=patient.drug.drugindication:ASPIRIN

то вы должны изменить свой код на это, поэтому вам просто нужно вернуть Promise, и вам не нужно использовать then(), поэтому измените свой код на

     $scope.getPatient = function(val) {
      return $http.get('https://api.fda.gov/drug/event.json', {
       params: {
           search: 'patient.drug.drugindication:' + val
        }
      })
     };

если вы хотите использовать then(), следуйте этому коду, что означает возврат данных

$scope.getPatient = function(val) {
var data = $http.get('https://api.fda.gov/drug/event.json', {
  params: {
    search: 'patient.drug.drugindication:' + val
  }
});
data.then(function(response){
   console.log(response.data.results)
});
  return data;
};

и если вы хотите больше, следуйте схеме ниже

https://api.fda.gov/drug/event.json?search=seriousnesslifethreatening:1+AND+patient.drug.medicinalproduct:%22ASPIRIN%22+AND+patient.patientsex:1&limit=10
person Majid    schedule 28.08.2016