Angular.js: Der Zahleneingabefilter funktioniert nicht, wenn wir den Wert löschen

Erstellt am 26. Nov. 2014  ·  5Kommentare  ·  Quelle: angular/angular.js

Wenn wir den Zahleneingabewert löschen (leer machen), sollte im Idealfall kein Filter angewendet und alle Werte aufgelistet werden. Wenn wir jetzt einen Filter anwenden, indem wir die Zahl 5 in das Eingabefeld eingeben, funktioniert dies einwandfrei und alle Daten, die mit 5 übereinstimmen, werden unten aufgelistet. Wenn wir nun den Wert im Eingabefeld löschen, sollten im Idealfall alle Werte aufgelistet werden (kein Filter), aber der Winkel wendet den Nullfilter für Zahlen an und alles wird herausgefiltert (ng-repeat listet nichts auf).

Eingabetyp = "Nummer" ng-model = "Alter"

Filter: Alter

Hinweis: Kein Problem mit der Eingabe von Typ = Text

forms low confusing bug

Hilfreichster Kommentar

(Wie Sie erwähnen) dies geschieht , weil input[number] Abtretungs null auf das Modell , wenn das Feld leer ist.

Es ist vernünftig (imo) zu erwarten, dass dies so funktioniert, wie Sie es erwarten, aber ich bin mir nicht sicher, wie wir dies angehen können.
Eine Korrektur auf der Filterseite ist nicht wünschenswert, da null ein gültiger Wert sein kann (und wir können ihn nicht als undefiniert behandeln). Es ist wahrscheinlich auch keine praktikable Lösung, es auf NgModelController reparieren.

@others : Gedanken?

In der Zwischenzeit können Sie diese (nicht so schöne) Problemumgehung verwenden:

<input type="number" ng-model="search.posts" />
...
<div ng-repeat="user in users | filter:((search.posts===null)?undefined:search)">...</div

Demo Geige

Alle 5 Kommentare

(Wie Sie erwähnen) dies geschieht , weil input[number] Abtretungs null auf das Modell , wenn das Feld leer ist.

Es ist vernünftig (imo) zu erwarten, dass dies so funktioniert, wie Sie es erwarten, aber ich bin mir nicht sicher, wie wir dies angehen können.
Eine Korrektur auf der Filterseite ist nicht wünschenswert, da null ein gültiger Wert sein kann (und wir können ihn nicht als undefiniert behandeln). Es ist wahrscheinlich auch keine praktikable Lösung, es auf NgModelController reparieren.

@others : Gedanken?

In der Zwischenzeit können Sie diese (nicht so schöne) Problemumgehung verwenden:

<input type="number" ng-model="search.posts" />
...
<div ng-repeat="user in users | filter:((search.posts===null)?undefined:search)">...</div

Demo Geige

Wir geben null da die Rückgabe von undefined von einem Parser einen Analysefehler verursacht. Ein weiterer Grund, warum das nicht das beste Design ist.

@Narretz Ich wollte gerade fragen, warum wir nicht undefined :-)

Ich weiß, dass dieser Beitrag ein bisschen alt ist, aber ich hatte eine wirklich schlechte Zeit, herauszufinden, wie ich dieses Problem lösen kann, also möchte ich meine Lösung teilen. Fügen Sie Ihrem Eingabefeld ein Ereignis oninput hinzu und prüfen Sie in der Javascript-Funktion, ob der Wert dieses Felds eine leere Zeichenfolge ist. Löschen Sie in diesem Fall den Wert des Eingabefelds mit:
delete document.getElementById ('was auch immer'). value;

Ich denke nicht, dass HTMLInputElement-Attribute konfigurierbar sein sollen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen