voglio farlo:Le espressioni complesse sono possibili in ng-hide/ng-show?
ng-hide="!globals.isAdmin && mapping.is_default"
ma l'espressione restituisce sempre false
.
Non voglio definire la funzione speciale su $scope
.
voglio farlo:Le espressioni complesse sono possibili in ng-hide/ng-show?
ng-hide="!globals.isAdmin && mapping.is_default"
ma l'espressione restituisce sempre false
.
Non voglio definire la funzione speciale su $scope
.
Utilizzare un metodo controller se è necessario eseguire codice JavaScript arbitrario oppure è possibile definire un filtro che restituisce true o false.
Ho appena testato (dovrebbe averlo fatto prima) e qualcosa come ng-show="!a && b"
ha funzionato come previsto.
Hai ragione. Il problema era che il flag isAdmin era di tipo "stringa" piuttosto che "booleano". – Paul
ng-show
/ng-hide
accetta solo boolean
valori.
Per espressioni complesse è consigliabile utilizzare controller e scope per evitare complicazioni.
seguito si lavorerà (Non è un'espressione molto complessa)
ng-show="User=='admin' || User=='teacher'"
Qui elemento verrà mostrato nella UI quando uno dei due condizione ritorno true (OR).
In questo modo è possibile utilizzare qualsiasi espressione.
Questo funzionerà se non si dispone di troppe espressioni.
Esempio: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"
Per qualsiasi più espressioni di questo uso di un controller.
Non penso che la tua affermazione sia corretta: 'Funzionerà se non hai troppe espressioni. Anche se sono d'accordo che dovrebbe essere fatto nel controller. –
In genere cerco di evitare espressioni con ng-show e ng-hide in quanto sono stati progettati come booleani, non condizionali. Se ho bisogno di logica condizionale e booleana, preferisco inserire la logica condizionale usando ng-if come primo controllo, quindi aggiungere un ulteriore controllo per la logica booleana con ng-show e ng-hide
Howerver, se si desidera utilizzare un condizionale per ng-show o ng-hide, ecco un collegamento con alcuni esempi: Conditional Display using ng-if, ng-show, ng-hide, ng-include, ng-switch
Alcune di queste risposte di cui sopra non hanno funzionato per me, ma questo ha fatto. Nel caso in cui qualcun altro abbia lo stesso problema.
ng-show="column != 'vendorid' && column !='billingMonth'"
Questa sintassi funziona per me e lo uso spesso. Se sta valutando 'false', potresti voler ricontrollare quei valori. È possibile che gli oggetti "globals" e/o "mapping" siano "indefiniti" – derrylwc
Leggi il mio commento sotto la risposta. – Paul
solo un suggerimento: se si utilizza invece il metodo controller, è possibile eseguire effettivamente la valutazione nel debugger! –