2017-01-30 13 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)) 

因为你有[[],[]]所以导致了问题