2017-07-15 156 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很高興知道它已經爲你工作,謝謝:) –