Ich habe ein Objekt, das eine Mischung aus Zahlen und Text für Werte enthält. Ich möchte den numbers
Filter auf den Wert des Objekts anwenden, wenn es eine Zahl ist (offensichtlich). Aber wenn es keine Nummer ist, würde ich damit einverstanden sein, dass es nur die Saite ausspuckt. Wenn Sie | number
auf den Wert anwenden, werden die Zahlen formatiert, aber die Zeichenfolgenwerte bleiben leer (nachdem sie keine Zahlen sind).
Ich vermute, dass es ein benutzerdefinierter Filter sein muss (was ich noch machen musste). Gibt es eine Möglichkeit, dies ausschließlich im HTML-Code zu tun, wenn Sie ng-repeat
ausführen?
Hier ist die angeforderte alternative Version der Antwort von @callmekatoootie mit ng-if
(v1.1.5):
Dies hat den Vorteil, dass nur der Filter für die Elemente ausgeführt wird, die numerisch sind. Dies ist in diesem Fall wahrscheinlich von geringem Nutzen, kann jedoch in anderen komplexeren Filtersituationen nützlich sein. Um Ihre andere Frage zu dem integrierten angular.isNumber
zu beantworten, verwendet @callmekatootie das in der Scope-Funktion isNumber
, die nur ein Wrapper für die Verwendung der in der Ansicht integrierten ist.
Sie könnten es auf diese Weise versuchen - In Ihrem Controller können Sie eine Funktion haben, die angibt, ob der angegebene Wert eine Zeichenkette oder eine Zahl ist:
%Vor%Als nächstes könnten Sie aus Ihrer Sicht Folgendes haben:
%Vor% Wenn also metricData
eine Zahl ist, wird sie gefiltert, und wenn es eine Zeichenkette ist, wird sie so ausgegeben, wie sie ist.
Ich weiß, das ist alt, aber ich denke, die beste Lösung ist es, die Logik auf einen Filter zu verschieben.
%Vor%Auf diese Weise ist der HTML-Code prägnanter und eckiger muss dom-Elemente nicht neu zeichnen
%Vor%Tags und Links angularjs filter angularjs-ng-repeat