2016-08-19 2 views
1

Ich habe eine kleine Filter-App in AngularJS erstellt und es funktioniert so, dass, wenn ich einen Buchstaben eintippe, es alles in der Tabelle mit diesem Buchstaben darin findet. Zum Beispiel, wenn ich ein "s" eintippe, dann bekomme ich alle Namen mit "s" drin. Warum funktionieren manche Buchstaben wie der Buchstabe "m" überhaupt nicht? Kann mir jemand sagen, wie ich das ändern soll, damit alle Buchstaben funktionieren? Danke vielmals.Warum würde mein Sortierfilter für alles außer dem Buchstaben "m" funktionieren?

HTML

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <title>The Sort Filter</title> 
    <link href="content/css/styles.css" rel="stylesheet" type="text/css" /> 
    <script src="app\lib\angular.min.js"></script> 
    <script src="app\app.js"></script> 

    </head> 
    <body ng-app="myApp"> 
    <div ng-controller="myController"> 
     <input type="text" ng-model="search" /> 
     <table> 
      <thead> 
       <tr> 
        <th>Firstname</th> 
        <th>Lastname</th> 
        <th>Gender</th> 
        <th>Salary</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="employee in employees | orderBy: 'lastName' | filter: search"{{employee.lastName}}"> 
        <td>{{ employee.firstName}}</td> 
        <td>{{ employee.lastName}}</td> 
        <td>{{ employee.gender}}</td> 
        <td>{{ employee.salary}}</td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
    </body> 
</html> 

JS

angular.module("myApp", []) 
    .controller("myController", function ($scope) { 
     //array of objects 
     {var employees = [ 
{firstName: "David", lastName: "Hastings", gender: "Male", salary: 55000}, 
{firstName: "Sarah", lastName: "Smith", gender: "Female", salary: 56000}, 
{firstName: "Mark", lastName: "Schydinger", gender: "Male", salary: 45000}, 
{firstName: "Pam", lastName: "Yerace", gender: "Female", salary: 70000}, 
{firstName: "Todd", lastName: "Barber", gender: "Male", salary: 50000}, 
{firstName: "Maria", lastName: "Randall", gender: "Female", salary: 59000}, 
{firstName: "Amanda", lastName: "Quinn", gender: "Female", salary: 68000}, 
{firstName: "James", lastName: "Stewart", gender: "Male", salary: 62000}, 
{firstName: "Rachel", lastName: "Dowd", gender: "Female", salary: 57000}, 
{firstName: "Keith", lastName: "Cameron", gender: "Male", salary: 56500}, 
{firstName: "Carol", lastName: "Marshall", gender: "Female", salary: 62000}, 
{firstName: "Peter", lastName: "Buckland", gender: "Male", salary: 60000}, 
{firstName: "Diana", lastName: "Murray", gender: "Female", salary: 73000}, 
{firstName: "Dylan", lastName: "Hamilton", gender: "Male", salary: 61000}, 
{firstName: "Caroline", lastName: "Clark", gender: "Female", salary: 62000}, 
{firstName: "Cletus", lastName: "Bones", gender: "Male", salary: 60000}, 
{firstName: "Judy", lastName: "Charleton", gender: "Female", salary: 64000} 
]}; 
$scope.employees = employees; 

     }); 
+0

wollten Sie Filter auf spezifische Eigenschaft Sammlung machen oder einfach nur eine einzige Eigenschaft wie ' firstName'/'lastName'? –

+0

Machen Sie eine jsfiddle :) – Chris

+0

Ich möchte in der Lage sein, Buchstaben aus einem Vornamen oder einem Nachnamen einzugeben und Ergebnisse zu erhalten. –

Antwort

2

es tatsächlich funktioniert. "m" gibt alle Daten wegen "Male" und "Female" zurück. Wenn Sie nur nach Vor- und Nachnamen filtern möchten, müssen Sie einen eigenen benutzerdefinierten Filter erstellen. Zum Beispiel:

https://jsfiddle.net/fa0coq4e/

Nach Ansicht:

<tr ng-repeat="employee in employees | orderBy: 'lastName' | myFilter: search"> 

und der Filter:

filter('myFilter', function() { 
    return function(array, search) {  
    if (search !== undefined && search.length > 0) {   
     var new_array = [];   
     for (var i = 0; i < array.length; i++) { 
     if (array[i].firstName.toLowerCase().indexOf(search.toLowerCase()) > -1 
     || array[i].lastName.toLowerCase().indexOf(search.toLowerCase()) > -1) 
      new_array.push(array[i]); 
     }   
     return new_array; 
    } else { 
     return array; 
    } 
}}); 
+0

Ha, "männlich/weiblich" - daran hätte ich denken sollen. Vielen Dank. –

Verwandte Themen