2017-01-30 50 views
2

我試圖使用角度材質md-autocomplete指令來顯示兩種不同的東西,一種是熱門產品,另一種是自動建議,但您只能使用一種md-item迭代,所以我決定使用ng-repeat。我使用了三個循環,第一個循環來自getSuggestion()函數返回的數組,該函數本身包含兩個數組:一組熱門產品對象和一組建議對象。 問題是,現在當我使用上下鍵來選擇一個項目時,它選擇的是一個項目列表而不是單個項目,當我點擊一個特定的項目時,我在搜索框中得到類似[object Object],[object Object],[object Object],[objct Object],[object Object],[object Object]的東西當我使用md-item迭代流行產品或建議數組時,我會得到一個項目字符串。在md-autocomplete中使用ng-repeat顯示自動建議和熱門產品

我的數據是這樣的:

Object {popular_products: Array[3], suggestion: Array[0], cat_suggestion: Array[0]} 

這是我在控制器代碼:

$scope.getSuggestions = function(query) { 
    $scope.query = query; 
    return $http.get(url + "?q=" + $scope.query + "&ssize=6&psize=3") 
     .then(function(response) { 
      if (typeof response.data === 'object') { 
       console.log(response.data); 
       //return $q.resolve(response.data) 
       return $q.resolve([response.data.suggestion, response.data.popular_products]); 
      } else { 
       return $q.reject(response.data); // invalid response 
     }, function(response) { 
      return $q.reject(response.data); // Error 
     }); 

};

這是我的看法:

<md-autocomplete 
    md-no-cache="true" 
    md-search-text= "query" 
    md-items="sugg in getSuggestions(query)" 
    md-item-text="sugg.suggestion" 
    md-delay="0" 
    md-min-length="1" 
    placeholder="Search"> 
    <md-item-template> 
     <div ng-if="$index == 0"> 
      <div ng-value="item.suggestion" ng-repeat="item in sugg">{{item.suggestion}}</div> 
     </div> 
     <div ng-if="$index==1"> 
      <span> 
       <b>Popular products:</b> 
       <div ng-value="pp.price" ng-repeat="pp in sugg "> 
        {{pp.price}} 
       </div> 
      </span> 
     </div> 
    </md-item-template> 
</md-autocomplete> 

這就是當我將鼠標懸停在一個建議碰巧它突出suggesitons,而不是個人的建議列表:

enter image description here

導致這個:

enter image description here

回答

0

的問題是在這裏我想

return $q.resolve([response.data.suggestion, response.data.popular_products]) 

嘗試

return $q.resolve(response.data.suggestion.concat(response.data.popular_products)) 

因爲你有[[],[]]所以導致了問題