orderby 필터가 문자열 배열에서 작동하도록 만드는 방법은 무엇입니까?


85

작동하지 않는 코드는 다음과 같습니다. 데모 : http://jsfiddle.net/8dt94/63/

<div ng-controller="MyCtrl">    
    <input type="text" ng-model="searchText" />
  <ul ng-repeat="strVal in arrVal|orderBy|filter:searchText" >
      <li>{{strVal}}</li>
  </ul>
</div>

var app=angular.module('myApp', []);
app.controller('MyCtrl', function ($scope,$filter) {
  $scope.arrVal = ['one','two','three','four','five','six'];  
});

나는 당신이 ng-repeat 배열에서 원시 값을 사용해야한다고 생각하지 않습니다. 작동하지 않으면. ( jsfiddle.net/EGVwG ).
Tosh

이 질문은 문자열 목록이어야하는 select의 ng-options 속성에 여전히 적용됩니다.
스페인 기차

답변:


248

메서드별로 주문할 수 있으므로 toString 메서드를 사용할 수 있습니다.

<ul ng-repeat="strVal in arrVal | orderBy:'toString()' | filter:searchText">

+1. 또한 끝에 "추적 기준"을 추가 할 수 있습니다. <ul ng-repeat = "strVal in arrVal | orderBy : 'toString ()'| filter : searchText track by $ index">
Amy

9
훌륭한 솔루션, 나는 이와 같이 정렬 된 숫자 배열이 필요 [2,5,3,1,6, 33]했기 때문에 대신 f를 toString()사용 valueOf()했고 완벽하게 작동했습니다. 솔루션에 감사드립니다.
ug_ 2014 년

이것은 나에게도 효과적이었습니다! 이 트릭이 왜 작동하는지 아십니까?
elethan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.