2014-05-24 16 views
5

mi sono dato il seguente codiceangolare, ng-se modificare il testo?

<h2>{{ownername}} Online Bookshop</h2> 
<input placeholder="type your name" ng-model="ownername" > 

quali uscite 'online Bookshop'

e se io ingresso 'Fred' 'uscite 'Fred in linea Bookshop'

Senza usare jQuery, e facendo cose il modo angolare, come dovrei cambiare il codice in modo che un apostrofo possessivo e la lettera s sono stati aggiunti quando l'input non è vuoto?

EG

libreria online quando l'input è vuoto, e

di Fred in linea Bookshop quando l'ingresso contiene 'Fred' stringa

risposta

16

Ricordate che il campo di applicazione è solo un luogo dove si possono valutare le cose. Questo è esattamente quello che possiamo fare. Il ? è un operatore ternario della forma: (expression)?<true clause>:<false clause>; ed è pari a:

if(expression) { <true clause>; } 
else { <false clause>; } 

Codice modificato:

<h2>{{ ownername.length ? ownername + "'s " : "" }}Online Bookshop</h2> 
<input placeholder="type your name" ng-model="ownername" > 

Edit: Anche se questo funziona, la sua, probabilmente meglio come altri sottolineano per nascondere la logica dalla vista. Questo può essere fatto chiamando una funzione scope o applicando un filtro alla variabile per trasformarla come previsto.

+1

eccezione non si può usare operatore ternario in questo modo angolare. – Quad

+0

questo vi darà un errore lexer: Errore di Lexer: carattere successivo imprevisto nelle colonne 18-18 [?] Nell'espressione [ownername.length? nome utente + "" ":" "]. – Quad

+0

@Quad AngularJS ha supportato l'operatore ternario [per più di un anno] (https://github.com/angular/angular.js/commit/6798fec4390a72b7943a49505f8a245b6016c84b) – user113215

4

Utilizzare un filtro!

app.filter('possessive', function() { 
    return function(val) { 
    if (!val) return ''; 
    return val + '\'s'; 
    }; 
}); 

Poi:

<h2>{{ ownername | possessive }} Online Bookshop</h2> 
+0

Non riesco a far funzionare questo a – PrimeLens

+0

Questo ha funzionato per me. Avevo bisogno di cambiare vero/falso a sì/no su un bool. – Anthony

Problemi correlati