Làm thế nào để làm cho bộ lọc theo thứ tự hoạt động trên mảng chuỗi?


85

Đây là mã không hoạt động: Demo: 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'];  
});

Tôi không tin rằng bạn nên sử dụng các giá trị nguyên thủy trong mảng ng-repeat của mình. Nếu không nó hoạt động. ( jsfiddle.net/EGVwG ).
Tosh

Câu hỏi này vẫn áp dụng cho phần đính kèm tùy chọn của một lựa chọn, đây phải là một danh sách các chuỗi.
Chuyến tàu Tây Ban Nha

Câu trả lời:


248

Bạn có thể đặt hàng theo một phương thức, vì vậy bạn có thể sử dụng phương thức toString

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

+1. Ngoài ra, bạn có thể thêm "track by" vào cuối: <ul ng-repeat = "strVal in arrVal | orderBy: 'toString ()' | filter: searchText track by $ index">
Amy

9
Giải pháp tuyệt vời, tôi cần một dãy số được sắp xếp như thế này [2,5,3,1,6, 33]để thay vào đó toString()tôi đã sử dụng valueOf()và nó hoạt động hoàn hảo. Cảm ơn vì giải pháp.
ug_

Điều này cũng làm việc cho tôi! Bất kỳ ý tưởng tại sao thủ thuật này hoạt động mặc dù?
elethan

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.