Bedinge Filter mit ng-repeat

8

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?

%Vor%     
EnigmaRM 20.06.2013, 05:38
quelle

3 Antworten

18

Hier ist die angeforderte alternative Version der Antwort von @callmekatoootie mit ng-if (v1.1.5):

%Vor%

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.

Hier ist eine Geige

    
sh0ber 20.06.2013, 23:21
quelle
3

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.

    
callmekatootie 20.06.2013 06:23
quelle
3

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%     
Matt Oakley 05.12.2015 13:24
quelle