2014-04-17 8 views

risposta

3

Se si vuole sempre key da aggiungere come classe:

ng-class="{selectedHeader: key == selectedCol, key: true]" 

oppure si può semplicemente mettere in un attributo class con {{}} interpolazione.

ng-class="{selectedHeader: key == selectedCol}" class="{{key}}" 

Solo per completezza, se solo si desidera includere, se si tratta di uguale selectedCol:

ng-class="{selectedHeader: key == selectedCol, key: key == selectedCol}" 
+1

Grazie, ma il problema è, chiave: vero e la chiave: chiave == selectedCol sarà solo aggiungere la 'chiave' di classe e non il valore. Avresti pensato che la classe = "{{chiave}}" avrebbe funzionato e funzionava quasi. Ma per qualche ragione, altre classi come ng-scope ng-binding ui-ridimensionabile, non verranno aggiunte se vado con la classe = "{{chiave}}" ....Nessuna idea del perché – Jukke

+0

Ah ... hai ragione riguardo alla chiave ': true': aggiungerà la chiave di classe'. Non sono sicuro delle altre classi mancanti. –

+0

Puoi pubblicare i dettagli sul motivo per cui hai bisogno delle altre classi su questo elemento, e quali sono i problemi causati dal fatto che non si trovano nell'elemento? –

1

lo si può fare da

ng-class="{selectedHeader: key == selectedCol}" class="{{key}}" 
+1

Grazie per il tempo che ci hai dedicato, e come ho commentato sull'altra risposta: avresti pensato class = "{{chiave}}" funzionerebbe e funziona quasi. Ma per qualche ragione, altre classi come ng-scope ng-binding ui-ridimensionabili, non verranno aggiunte se vado con la classe = "{{chiave}}" .... Non ho idea del perché – Jukke

+0

Intendi aggiungere la direttiva come ' class' –

3

Si potrebbe gestire questo utilizzando $scope metodi per definire quei nomi di classi dinamici. Questo qualcosa sarebbe simile a questa:

Controller:

$scope.selectedCol = 3; 
$scope.key = 3; 

// dynamic ng-class values 
$scope.selectedHeader = function() { 
    if ($scope.selectedCol === $scope.key) 
     return 'header-selected'; 
    else 
     return false; 
}; 

// selected header definition for ng-class 
$scope.headerKey = function() { 
    return 'header-' + $scope.key; 
}; 

Vista:

<header ng-class="[ selectedHeader(), headerKey() ]"> 
    <h1>Header element</h1> 
</header> 

Risultato:

<header ng-class="[ selectedHeader(), headerKey() ]" class="header-selected header-3"> 
     <h1>Header element</h1> 
</header> 
1

Penso che quello che stai cercando sia: ng-class="{ {{key}}:{{key}} }"

Ricorda inoltre che le classi di css non devono iniziare con un numero, quindi potresti dover aggiungere il prefisso al tuo valore chiave.

0

Prova questo:

class="{{key}} ng-class:{'selectedHeader': key == selectedCol}; 
0

questo non funzionerà perché {selectedHeader: chiave == selectedCol} saranno valutati come un oggetto e non come una stringa:

ng-class="[{selectedHeader: key == selectedCol}, key]" 

Il seguente codice di lavoro , aggiungerà le classi 'selectedHeader' e il valore della chiave:

ng-class="[key == selectedCol ? 'selectedHeader' : '', key]" 
2

// single class 
 
<div ng-class="{'myclass' : condition}"> 
 
</div> 
 
    
 
// multiple class 
 
<div ng-class="{'myclass1': condition1, 'myclass2': condition2}"> 
 
some content 
 
</div>