2014-10-02 11 views
9

C'è un modo semplice per mostrare un valore vero/falso come sì/no?Angularjs - Mostra vero/falso come si/no

sto Recupero dal database di un JSON che contiene:

[Object, oggetto, "WithCertification": vero]

Questo è il codice html:

Con Certificazione {{elem.WithCertification}}

si sta visualizzando questa:

con la certificazione vera

lo voglio per visualizzare questo:

con la certificazione sì

C'è un modo, senza dover andare al controller per cambiare il vero/falso a sì/no?

In ogni caso ho bisogno di cambiarlo, qualche suggerimento?

Grazie.

+0

Perché downvote il post? – SrAxi

risposta

5
{{elem.WithCertification == true ? "Yes" : "No"}} 
1

Se questo è un caso una volta, sono d'accordo con Joseps answer. Utilizzare:

With Certification {{elem.WithCertification?'yes':'no'}} 

Tuttavia, se si intende utilizzarlo più spesso, si consiglia di utilizzare un filtro. Un caso molto simile è spiegato in the AngularJS tutorial step 9

+0

Seriamente? Dovresti creare un filtro $ per un'operazione ternaria? Veramente??? – Josep

+0

Mi ha ricordato che questo è esattamente lo stesso caso del tutorial. Potrebbe essere utile –

+2

Sì, perché no. Se la stessa logica viene utilizzata per più di 2-3 punti, è preferibile creare un filtro. Non si sa mai quando cambiano i requisiti (come trattare un indefinito come un forse, per quanto assurdo possa sembrare), e immaginare di cambiare questa logica in tutti i punti in cui viene usata. –

3

Il modo migliore è quello di creare un filtro personalizzato, in quanto è meglio mettere la logica nella vista il meno possibile. Di seguito è riportato un codice di esempio che mostra come ottenere ciò.

angular.module('myApp', []) 
.filter('yesOrNo', function() { 
return function(input) { 
    return input === 'true' ? 'yes' : 'no' ; 
}; 
}) 

in HTML, si dovrebbe solo fare: -

With Certification {{elem.WithCertification | yesOrNo}} 
+0

Perché il downvote ?? Se il downvote è perché ho suggerito di creare un filtro, vedi la mia risposta alla risposta di Remco. Sostengo la mia affermazione che la creazione di un filtro è l'opzione migliore qui. È vero, potresti dover scrivere 6 righe aggiuntive di codice, ma ne vale la pena. –

+0

Prima di tutto: un filtro per qualcosa di simile è un overkill, specialmente perché l'unica cosa che si sta facendo è un operatore ternario, se si stesse usando una logica extra che renderebbe difficile leggere l'espressione angolare, o usando il codice javascript che non puoi avere dentro l'espressione angolare che sarebbe un'altra storia e avere un filtro $ sarebbe la strada da percorrere. Secondo: nella vista stai usando un filer chiamato: 'yesOrNo', ma il filtro che hai definito si chiama 'myFilter'. – Josep

+0

Scusa, mia cattiva !! Era un errore di battitura, lo ha modificato. Ma visto che il filtro è eccessivo, non sono d'accordo. Angularjs stesso ha filtri integrati come lettere minuscole e maiuscole che sono lì solo per convertire il caso. –

6

è possibile utilizzare un filtro o un operatore ternario. Il filtro sarebbe probabilmente migliore di quello che ho letto. Gli operatori ternari sono disapprovati.

app.filter('YesNo', function(){ 
     return function(text){ 
      return text ? "Yes" : "No"; 
     } 
     }) 

Il codice è abbastanza semplice impostare l'app.filter, dargli un nome, passaggio di una funzione anon, restituendo una funzione che prende il vostro vero, falso come un param, per poi tornare il testo e determinare se è vero o falso, se il vero ritorno sì, altrimenti no.

In alternativa farlo all'interno del tag.

<td>{{item.value ? "Yes":"No"}}</td> 

Si può vedere questo lavoro qui http://plnkr.co/edit/altgrjKhXHACmczOvGFw

Problemi correlati