2013-07-06 5 views
0

나는 다음과 같은 방법으로 NG 반복을 사용하여 목록을 인쇄하고 꺼내 필터 :AngularJS와 사용자 정의 특정 값

<ul ng-controller="myController"> 
    <li ng-repeat="somename in somenames"> 
     <a>{{ somename.name }}</a> 
    </li> 
</ul> 

과 값이 같은 컨트롤러에서 오는 :

myApp.controller('myController', ['$scope', 
    function($scope) { 
     $scope.somenames = [{ name: 'group1'},{name: 'group2'},{name: 'admin'},{name: 'group4'}]; 
    } 
]); 

'admin'값은 항상 목록의 맨 위에 남고 나머지 이름은 알파벳순으로 정렬됩니다. 여기 jsfiddle에 대한 나의 현재 작업은 다음과 같습니다. http://jsfiddle.net/ADukg/3353/ (아무것도 아예 갇혀 있지 않습니다.) 어떤 도움이 필요합니까? 이

답변

1

당신은 이동 :

myApp.filter('FirstAdminThenAlphabetic', function() { 
    return function (array, order) { 
     var comparator; 

     if (order === 'descending') { 
      comparator = function (elm1, elm2) {      
       return elm1.name < elm2.name; 
      } 
     } else { 
      comparator = function (elm1, elm2) {      
       return elm1.name > elm2.name; 
      } 
     } 

     return array.filter(function (elm) { 
      return elm.name === 'admin'; 
     }).concat(
      array.filter(function (elm) { 
       return elm.name !== 'admin'; 
      }).sort(comparator) 
     ); 

    }; 
}); 

당신은 기본적으로 당신이 관리자 아무것도하지만 필터링 목록에 연결하여보다, 모든 관리자를 필터링하고 그 목록을 정렬 할 수 있습니다. 오름차순 또는 내림차순 함수를 추가했습니다. jsfiddle

+0

굉장합니다. 진지하게. – iRaghu

+0

이것을 구현하는 동안 내 컴퓨터에 TypeErrors가 발생합니다. 이름이 같은 두 가지 필터 메소드가 있기 때문일 수 있습니까? 하나는 각도에서 나오고 다른 하나는 기본적으로 array.filter()입니까? 어떤 도움이 필요합니까? 또는 대체 오신 것을 환영합니다 .. – iRaghu

+0

유형 오류를 제공하는 줄을 알 수 있습니까? 다른 라이브러리를 사용하고 있습니까? 네가 일하는거야? 어떤 브라우저를 사용합니까? Array.filter는 ie9 이후에서만 지원됩니다. 레거시 브라우저의 경우이 페이지에서 shim을 사용할 수 있습니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter – Jan