2015-09-11 12 views
9

Ho una lista di oggetti. Vengono visualizzati con ngRepeat direcitve. Ogni blocco con informazioni è coperto da direttiva, che ha alcuni metodi di supporto.Come utilizzare il binding unidirezionale con la direttiva ngClass in AngularJS?

, ovvero costruisce la variabile labelId, che viene utilizzata in questo blocco con un collegamento unidirezionale.

Così quando voglio visualizzarlo per esempio nell'attributo for non ho problemi {{::label}}.
Quando voglio visualizzarlo come nome del campo, non c'è nessun problema {{::label}}.

Ma quando voglio fare riferimento a esso in ngMessages blocco come:

<p class="error-message" ng-messages="FormName[::label + '_' + $index].$error" ng-messages-include="error-messages.html"></p> 

O quando voglio usare come riferimento per impostare classe CSS in modo dinamico come:

<div ng-class="{'has-error': (FormName[::label + '_' + $index].$error.someErrorName)}"> 

quindi sono ottenendo Error

Error: [$parse:syntax] Syntax Error: Token ':' not a primary expression at column 21 of the expression [{'has-error': (FormName[::label + '_' + $index].$error 
+1

'ng-class =" :: {'has-error': ...} "' – YOU

+0

Cosa succede se ci sono altre classi, che non richiedono il bind a senso unico? – Eugene

+0

Credo che l'angolare ti abbia consentito solo una :: sintassi per espressione. – YOU

risposta

19

ng-classe ha un modo di sintassi vincolante troppo

ng-class="::{'has-error': ..., 'no-error': ...}" 

Ma è un'espressione anche se all'interno ci sono molte classi.

Quindi se avete bisogno di un collegamento a due vie per alcune classi all'interno di quella classe ng, non è possibile utilizzare il bind a senso unico.

Problemi correlati