Sıralama süzgeci dizge dizileri üzerinde nasıl çalışır?


86

İşte çalışmayan kod: 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'];  
});

Ng-yineleme dizinizde ilkel değerler kullanmanız gerektiğine inanmıyorum. Değilse işe yarıyor. ( jsfiddle.net/EGVwG ).
Tosh

Bu soru, dizelerin listesi olması gereken bir seçimin ng seçenekleri için hala geçerlidir.
İspanya Treni

Yanıtlar:


248

Bir yönteme göre sipariş verebilirsiniz, böylece toString yöntemini kullanabilirsiniz

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

+1. Ek olarak, sonuna "takip etme" yi ekleyebilirsiniz: <ul ng-tekrar = "arrVal'de strVal | orderBy: 'toString ()' | filter: searchText parçası $ index tarafından">
Amy

9
Harika çözüm, bu [2,5,3,1,6, 33]şekilde sıralanmış bir sayı dizisine ihtiyacım vardı, bu yüzden onun yerine f toString()kullandım valueOf()ve mükemmel çalıştı. Çözüm için teşekkürler.
ug_

Bu benim için de çalıştı! Bu numaranın neden işe yaradığına dair bir fikriniz var mı?
elethan

11

Özel bir filtre yazın :

app.filter('mySort', function() {
    return function(input) {
      return input.sort();
    }
  });

HTML:

<ul ng-repeat="strVal in arrVal|filter:searchText|mySort">

Keman .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.