Ho provato questo:Come posso creare un bind condizionale in knockout.js?
<div data-bind="attr: {class: itemSelected? 'selected' : 'unselected' }"></div>
Ma non funziona :)
Ho provato questo:Come posso creare un bind condizionale in knockout.js?
<div data-bind="attr: {class: itemSelected? 'selected' : 'unselected' }"></div>
Ma non funziona :)
Supponendo di avere questo:
function viewModel() {
this.itemSelected = ko.observable(true);
}
ko.applyBindings(new viewModel());
Aggiungere un() dopo itemSelected per ottenere il valore corrente della osservabile che è possibile utilizzare con l'operatore ternario:
<div data-bind="attr: { class: itemSelected() ? 'selected' : 'unselected' }"></div>
Se non è stato necessario assegnare la classe selezionata per lo stato non selezionato si poteva fare questo, invece:
<div data-bind="css: { selected: itemSelected }"></div>
In seguito ha lavorato per me, Stavo usando entrambi gli attributi css e id, per me non funzionava se l'attributo css non è il primo, quindi tieni l'attributo css come il tuo primo.
<div class="panel-collapse collapse" data-bind="css:{in:$index()==0}, attr: { id:'collapse'+$index()} ">
...
...
...
</div>
Hai provato con uno spazio bianco tra l'oggetto selezionato e "?" attr: {class: itemSelected? 'selected': 'unselected'} –
Lo "spazio bianco" ha un significato in knockout.js? – ozz
Fa quando separa il punto interrogativo dalla variabile. – Tyrsius