2013-03-27 6 views

Odpowiedz

91

{{ counter || '?'}}. Po prostu czysty javascript. || może być użyty jako wartość domyślna. Ponieważ w każdym z nich byłyby różne puste komunikaty, uogólniona dyrektywa nie byłaby odpowiednia dla wielu przypadków.

Jeśli chcesz zastosować inną klasę do pustych, który jest również wbudowany w:

<div ng-class="{empty: !counter}" ng-bind="counter || ?"></div> 
+11

FWIW, upewnij się, że ustawiłeś wartość domyślną przed filtrami (np. '{{Counter || '?' | Myfilter}}'). – Jesse

+3

Ogromna +1 do @Jesse – zmanc

+9

Ta odpowiedź jest prosta i czysta, ale wadą jest to, że wyświetla ona nie tylko symbol zastępczy na 'null' i' undefined', ale także na '0', która może być poprawną wartością. – tiledcode

25

chciałbym zrobić to w ten sposób, ale być może istnieje lepszy sposób:

angular.module('app').filter('placeholdEmpty', function(){ 
    return function(input){ 
    if(!(input == undefined || input == null)){ 
     return input; 
    } else { 
     return "placeholder"; 
    } 
    } 
}); 

a następnie użyć {{ x | placeholdEmpty}}

+4

Zaleta rozwiązania filtrującego ponad {{counter || "?"}} oznacza, że ​​możesz odróżnić undefined, null lub zero. –

+0

Inną ważną zaletą filtra zastępczego jest to, że w przyszłości możesz łatwo zmienić tekst zastępczy, jeśli zdecydujesz, że nie lubisz "?" ... – hendrix

+0

A jak zastosować filtr do x? – ignaces

13

robię to z NG-show, jak to:

<strong>{{username}}</strong> 
<span class="empty" ng-show="!username">N/A</span> 

Oczywiście, dodaje on dużo więcej elementów do mojego widoku, co może być w stanie obsłużyć inaczej. Podoba mi się jednak, jak łatwo jest jasno zobaczyć, gdzie są moje puste miejsca/puste wartości, a także mogę je inaczej stylizować.

5

Wdrożenie default filtr:

app.filter('default', function(){ 
    return function(value, def) { 
    return (value === undefined || value === null? def : value); 
    }; 
}); 

i używać go jako:

{{ x | default: '?' }} 

Zaletą rozwiązania filtrującego w porównaniu z {{ x || '?'}} jest to, że można odróżnić undefined, null lub 0.

2

Wdrożenie domyślne filtry-owski działa, ale jeśli używasz tylko cyfry można użyć kątowy własnego number filter

Jeśli wejście jest null lub undefined, to po prostu być zwrócone. Jeśli wejście jest nieskończone (Infinity lub -Infinity), zwracany jest symbol Infinity "∞" lub "-∞". Jeśli wejście nie jest liczbą, zwracany jest pusty ciąg znaków .

{{ (val | number) || "Number not provided"}} 
+1

Dzięki! Działa to również z ng-bind = "(val | number) || 'Default'" również! –