2016-06-07 4 views
0

DIE LAGE Filterung:AngularJS: Wie Schreibweise zu vermeiden, während

Ich musste meinen eigenen Filter machen, anstatt den normalen Winkelfilter zu verwenden, aufgrund einer besonderen Situation:

Ich habe eine verschachtelte Objekt auf vier Ebenen: Programme - Tage - Hallen - Präsentationen. Jede Halle ist ein Akkordeon mit den jeweiligen Darstellungen.

Jedenfalls funktioniert der Filter, den ich gemacht habe, richtig.

Nur eine Sache: Im Moment ist der Filter Briefkasten.

Wenn also ein Darstellungsname "Automation" und der Benutzertyp "Automation" lautet, wird er nicht in den Ergebnissen angezeigt.

DER CODE:

Im Moment sucht einen einfachen indexOf der Zeichenfolge durch den Benutzer innerhalb der Präsentation Name eingegeben:

angular.forEach(value_halls.presentations, function(presentation_info, key_presentation) 
{ 
    var name = presentation.name; 
    var index = name.indexOf($rootScope.filter.name); 

    if (index > -1) 
    {   
     $rootScope.program_list_filtered.push(presentation_info); 
    } 

}); 

DIE FRAGE:

Do Sie wissen, wie kann ich Briefkasten beim Filtern vermeiden?

Vielen Dank!

Antwort

2

Sie toLowerCase auf beiden Saiten verwenden:

var index = name.toLowerCase().indexOf($rootScope.filter.name.toLowerCase());

1

Eine Möglichkeit, das zu erreichen ist sowohl String wie die in Großbuchstaben zu umwandeln zu verwenden:

var name = presentation.name.toUpperCase(); 
var index = name.indexOf($rootScope.filter.name.toUpperCase()); 

Eine weitere Möglichkeit, zu verwenden ist a Regex

var name = presentation.name; 
var index = name.match(new RegExp($rootScope.filter.name, "i"));