2015-05-22 19 views
7

Czy istnieje jakiś sposób, aby powiedzieć w kątowym coś takiego:Wyświetl "-" czy wartość jest pusta?

<th ng-repeat=" o in Odds" >{{o.Name || "-"}}</th> 

Więc jeśli nie ma danych w o.name wyświetlanie „-”?

+1

Twój kod jest praca [JSFiddle] (https://jsfiddle.net/bwh5abv8/3/) – valverde93

+1

Odpowiedzi przedstawić poprawną alternatywę, ale nie uwzględniają faktu, że jeśli to, co masz prawo tam nie działa, wartość faktycznie nie jest falsey, gdy go uruchomisz. – jdphenix

+1

więc, jak wspomniano wcześniej twój przykład jest poprawny, czy mógłbyś podać przykład swoich danych w 'Kursach' i możemy dowiedzieć się dlaczego to nie działa dla ciebie –

Odpowiedz

6

Twój przykład powinien działać, ale jeśli masz spacje lub funkcja w o.Name nie zostanie rozwiązana na falsey, a otrzymasz niewidoczne miejsce w kodzie HTML zamiast pożądanej kreski.

Filtr rodzajowy mogą być wykorzystane do zastąpienia pustych wartości kresek i zastosować różne normalizację na pierwszym wejściu:

angular.module('App.filters', []).filter('placeholder', [function() { 
    return function (text, placeholder) { 
     // If we're dealing with a function, get the value 
     if (angular.isFunction(text)) text = text(); 
     // Trim any whitespace and show placeholder if no content 
     return text.trim() || placeholder; 
    }; 
}]); 

można następnie wykorzystać je w następujący sposób:

<th ng-repeat=" o in Odds" >{{o.Name | placeholder:'-'}}</th> 

to wtedy Całkowicie wielokrotnego użytku dla innych wierszy/kolumn i wszędzie, gdzie chcesz zastosować tę samą regułę.

Przykład: http://jsfiddle.net/kfknbsp7/4/

+0

co, jeśli funkcja zwraca nie ciąg znaków? – Grundy

+0

Z powyższym kodem jak-jest błąd. Prawdę mówiąc, demonstrowałem na prostym przykładzie, który bezpośrednio rozwiązał problem PO. Oczywiście taki filtr daje wiele możliwości sprawdzania poprawności i wpisywania danych wejściowych i wykonywania takich obliczeń z plików HTML. – seanhodges

1

W tym przypadku można użyć ngIf tak:

<th ng-repeat=" o in Odds" > 
     <span ng-if="o.Name">{{o.Name}}</span>   
     <span ng-if="!o.Name"> - </span> 
    </th> 
1

Można mieć coś za pomocą ngIf jeśli to nie zadziała

<th ng-repeat="o in Odds"> 
    <span ng-if="o.Name">{{o.Name}}</span> 
    <span ng-if="!o.Name">-</span> 
</th> 
+1

Ta sama odpowiedź w tym samym czasie ... – carton

Powiązane problemy