返回结果时AngularJS Typeahead错误

时间:2015-02-26 21:21:20

标签: angularjs angularjs-scope angular-ui-bootstrap bootstrap-typeahead angular-ui-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:无法读取属性&#39;长度&#39;未定义的

2 个答案:

答案 0 :(得分:0)

这意味着如果您输入浏览器地址

,服务器的响应不包含请求的数据

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

您只能看到错误消息

答案 1 :(得分:0)

首先,请检查此链接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