2017-07-15 135 views
1

我试图使用md-autocomplete与$ http(),我可以看到在控制台中的值,但我无法显示从api请求返回到自动完成的数据。 我尝试使用return关键字返回存储在JSON数组中的值。如何填充md-autocomplete下拉列表?

 <md-autocomplete 
      md-autoselect=true 
      placeholder="Search for films" 
      md-items="item in querySearch(searchText)" 
      md-item-text="item.title" 
      md-min-length="2" 
      md-search-text="searchText" 
      md-selected-item="selectedItem"> 
     <md-item-template> 
      <span class="films-title"> 
      <span md-highlight-flags="^i" md-highlight-text="searchText"> 
       {{item.title}} 
      </span> 
      </span> 
     </md-item-template> 
     <md-not-found> 
      No match found. 
     </md-not-found> 
     </md-autocomplete> 

我想显示存储在一个JSON阵列和内容可以看出,在控制台中的数据:

'use strict'; 

filmApp.controller('SearchController',function ($scope, $http){ 
    $scope.results = { 
     values: [] 
    }; 

    $scope.querySearch = function (query) { 
    $http({ 
     url: 'https://api.themoviedb.org/3/search/movie?include_adult=false&page=1', 
     method: 'GET', 
     params: { 
       'query': query, 
       'api_key': apiKey 
     } 
     }).success(function (data, status) { 

      for (var i = 0; i < data.results.length; i++) { 
     $scope.results.values.push({title: data.results[i].original_title}); 

        console.log($scope.results.values);  
        return $scope.results.values; 

       } 
       console.log("STATUS: "+status); 

      }).error(function (error) { 
       console.log("ERROR: "+error); 
      }); 
     }; 
    }); 

回答

2

querySearch方法应该从promise.then你应该返回返回一个承诺&一个数据。所以你的情况,你所用.success/.error回调(还以为他们已经过时),这是不允许的承诺,从你的querySearch方法的返回

$scope.querySearch = function (query) { 
    return $http.get('https://api.themoviedb.org/3/search/movie?include_adult=false&page=1', { 
     params: { 
      'query': query, 
      'api_key': apiKey 
     } 
    }).then(function (data, status) { 
     var data= response.data; 
     for (var i = 0; i < data.results.length; i++) { 
      $scope.results.values.push({title: data.results[i].original_title}); 
      console.log($scope.results.values);  
     } 
     return $scope.results.values; 
    }) 
}; 
+0

感谢您的Pankaj,似乎工作。我不知道.success/.error回调阻止了诺言被退回,也没有意识到他们已被弃用 –

+0

@YacubAli很高兴知道它已经为你工作,谢谢:) –