DIE LAGE:Angular ui-select-Filterung nur ein Feld
Ich habe einen Winkel App angular ui-select mit Menschen zu suchen, und wählen Sie aus einer Datenbank.
Es funktioniert gut, außer einer Sache. Der Benutzer sollte in der Lage sein, zwischen den Personen anhand zweier Kriterien zu filtern: Name und E-Mail-Adresse.
Mit dem normalen Winkelfilter kann ich nur einen filtern. Wenn ich versuche, beide Felder zu filtern, funktioniert es nicht mehr.
Arbeitsbeispiel MIT EINEM GEBIET:
<ui-select multiple ng-model="database_people.selectedPeople" theme="select2" ng-disabled="disabled" style="width:100%">
<ui-select-match placeholder="Select person...">{{$item.name}} < {{$item.email}} ></ui-select-match>
<ui-select-choices repeat="person2 in list_people | filter: {name: $select.search, db_data_type_id: 5}">
<div ng-bind-html="person2.name | highlight: $select.search"></div>
<small>
email: <span ng-bind-html="''+person2.email | highlight: $select.search"></span>
</small>
</ui-select-choices>
</ui-select>
NICHT MIT ZWEI FELDER IN DER FILTER Arbeitsbeispiel:
<ui-select multiple ng-model="database_people.selectedPeople" theme="select2" ng-disabled="disabled" style="width:100%">
<ui-select-match placeholder="Select person...">{{$item.name}} < {{$item.email}} ></ui-select-match>
<ui-select-choices repeat="person2 in list_people | filter: {name: $select.search, email: $select.search, db_data_type_id: 5}">
<div ng-bind-html="person2.name | highlight: $select.search"></div>
<small>
email: <span ng-bind-html="''+person2.email | highlight: $select.search"></span>
</small>
</ui-select-choices>
</ui-select>
Das Merkwürdige ist, dass es tatsächlich funktioniert, ABER nur für das erste Zeichen. Wenn ich das erste Zeichen eintippe, markiert es es in beiden Feldern, Name und E-Mail. Aber wenn ich das zweite Zeichen eintippe funktioniert es nicht mehr (Ich habe keinen Fehler in der Konsole).
attemp UNTER VERWENDUNG PROPSFILTER VON ANGULAR SAMPLES:
<ui-select multiple ng-model="database_people.selectedPeople" theme="select2" ng-disabled="disabled" style="width:100%">
<ui-select-match placeholder="Select person...">{{$item.name}} < {{$item.email}} ></ui-select-match>
<ui-select-choices repeat="person2 in list_people | propsFilter: {name: $select.search, email: $select.search, db_data_type_id: 5}">
<div ng-bind-html="person2.name | highlight: $select.search"></div>
<small>
email: <span ng-bind-html="''+person2.email | highlight: $select.search"></span>
</small>
</ui-select-choices>
</ui-select>
In diesem Fall brach es vollständig, da keine Daten mehr in der select2 und ich einige Fehler in der Konsole:
Cannot read property 'toString' of null
Cannot read property 'length' of undefined
die Frage (n):
Wie kann ich unter mulitple Felder filtern? Kann ich das mit normalen Filter tun? Oder muss ich einen benutzerdefinierten Filter verwenden? Aber in diesem Fall funktioniert nicht richtig?
Vielen Dank!
@hanu Nur wundernd, haben Sie die benutzerdefinierte JavaScript-Funktion für PropsFilter implementiert? Es wird nicht alleine funktionieren (siehe Zeile 83) (http://plnkr.co/edit/5pWPKGSQfGejuEflDNuF?p=preview)). Ich habe noch nicht versucht, es zu benutzen, aber es scheint, als ob viele Leute nicht wissen, dass sie den Javascript-Code einschließen müssen. – DaaaahWhoosh
Ja, es muss die Richtlinie enthalten sein. Danke, darauf hinweisen. – johnnyfittizio