2017-09-22 4 views
0

Ich bin mir nicht sicher, ob dies möglich ist, aber jede Einsicht würde sehr geschätzt werden.AngularJs Filter mit einer bedingten Bedingung

Ich versuche eine Dauer für ein Album mit einem benutzerdefinierten angularJs-Filter zu filtern, der bereits für mich bereitgestellt wird. Ich möchte entweder Stunden zeigen, wenn es verfügbar ist, oder es überhaupt nicht zeigen, wenn es nicht ist. Ich habe versucht, mit so etwas wie:

<span>{{ media.duration | peDateFormatFilter: ((HH > 0) ? {"HH:mm:ss":{ "def": "H[ hrs] mm[ mins]"}} : "mm:ss":{ "def": "mm[ mins])} }}</span> 

Das Problem mit diesem ist es im Browser irrende out hält, wenn ich es laufen mit:

Error: [$parse:ueoe] Unexpected end of expression: media.duration | peDateFormatFilter: ((HH > 0) ? "HH:mm:ss":{ "def": "H[ hrs] mm[ mins]" 

Ich bin nicht sicher, was das sein könnte? Ist die beste Lösung für mich, nur einen anderen benutzerdefinierten Filter für meinen Code zu erstellen?

Vielen Dank für Ihre Hilfe!

+0

Das ist die beste Lösung in der Tat, das sieht wirklich hässlich aus, auch wenn Sie es funktionieren würde, wer würde dies beibehalten? Es wäre so schwer zu wissen, was du in wenigen Monaten für dich selbst meintest. – pegla

+0

Erstellen Sie einen benutzerdefinierten Filter. Der Fehler tritt auf, da dies ein Ausdruck ist und in Ausdrücken können Sie keine Bedingungen verwenden: https://docs.angularjs.org/guide/Ausdruck (keine Kontrollflussanweisungen) –

+0

sein angularjs oder angular? –

Antwort

0

Was ich getan habe ist, dass ich zwei <span ng-if s der Seite hinzugefügt habe, die das Problem behebt.

          <span ng-if="media.duration.substr(0,2) != 00">{{ media.duration | peDateFormatFilter:"HH:mm:ss":{ "def": "H[ hrs] mm[ mins]"} }}</span> 
              <span ng-if="media.duration.substr(0,2) == 00">{{ media.duration | peDateFormatFilter:"HH:mm:ss":{ "def": "mm[ mins]"} }}</span> 

Danke für das Betrachten!