2014-06-05 4 views
0

제품 JSON 파일이 있고 JSON 파일의 각 제품에는 고유 한 태그 집합이 있습니다 (일부는 다른 제품에서 공유됩니다). ng-repeat를 사용하여 배열에서 찾은 태그 목록을 만든 다음 생성 된 태그를 클릭하여 클릭 한 태그로 페이지의 항목을 필터링 할 수 있습니까? 각 속성은 목록에 한 번만 나타나야하며 반복 된 속성이 없어야합니다. 가능합니까 아니면 필터를 하드 코딩해야합니까? 나는 Angular에 아직 익숙하지 않아 제한이 확실하지 않습니다.배열로 카테고리 별 각도 필터

답변

1

모든 제품의 모든 특성을 반복하여 배열에 추가하는 기능을 만듭니다 (아직없는 경우).

$scope.getAttributes = function(){ 
    var attributes = []; 
    angular.forEach($scope.data, function(item){ 
    angular.forEach(item.attributes, function(attribute){ 
     if(attributes.indexOf(attribute) == -1) 
     attributes.push(attribute); 
    }) 
    }) 
    return attributes; 
} 

이제 당신은 그 속성에 대한 HTML 태그의 목록을 만들 수 있습니다

<div ng-repeat="a in getAttributes()" ng-click="setFilter(a)">{{a}}</div> 

를 제품 목록을 필터링하는 데 사용되는 selectedAttribute 변수를 설정합니다 속성을 클릭 :

<table> 
    <tdata> 
     <tr ng-repeat="d in data | filter:{attributes: selectedAttribute}"> 
     <td>{{d.name}}</td> 
     <td>{{d.attributes}}</td> 
     </tr> 
    </tdata> 
</table> 

Plunker Demo

+0

위대한 내용이지만 구현에 관해서는 나 자신의 코드는 $ scope.getAttributes에서 4 행을 지나지 않습니까? 그것은 plunker에서 T에 복사 ... – leaksterrr

+0

무엇이 오류입니까? 그리고 Angular의 최신 버전을 사용하고 있습니까? – Jerrad

+0

nvm, 고맙습니다. 고맙습니다. – leaksterrr