ho un po 'di javascript:KnockoutJS valore di commutazione nei dati-bind
function ViewModel() {
var self = this;
self.highlight = ko.observable(true);
}
ko.applyBindings(new ViewModel());
E il codice html che lo integra:
<div data-bind="css: { highlighted: highlight }, click: highlight(!highlight())">
random string
</div>
Quello che sto cercando di realizzare:
- La classe css 'evidenziata' per essere attivata solo quando l'evidenziazione var è vera
- Facendo clic su il div alternerà il valore bool di var clou
- risultato voluto: cliccando sul div per attivare/disattivare la sua classe CSS
Quello che sto ricevendo:
- Il valore iniziale di punto culminante è
true
, eppure la classe css inizia disattivata (se cambio il valore iniziale infalse
, la classe css è attivata: sembra che in qualche modo abbia attivato il click binding quando non ho ancora cliccato nulla) - Il la classe css di div non si attiva fare clic su
Preferisco non creare una nuova funzione di clic corrispondente all'interno di ViewModel. Sto cercando, se possibile, un po 'di codice che posso inserire solo inline all'interno del data-bind.
Ecco il codice a JSFiddle: http://jsfiddle.net/4wt4x/1/
Qualcuno può spiegare cosa sta succedendo e quello che sto facendo in modo errato?
Grazie per la risposta. Non c'è modo di farlo da solo all'interno della stessa data-bind? Questo è quello che sto cercando, se possibile. – dk123
Personalmente considererei una cattiva pratica mettere qualcosa di simile in una rilegatura. Il punto è mantenere la tua vista separata dal tuo javascript. Tuttavia, se lo vuoi davvero, puoi semplicemente fare clic su: function (self) {self.highlight (! Self.highlight())} per il bind, ma non lo consiglierei dal momento che il debug in un secondo momento sarebbe terminato dover trovare javascript in due posti invece di uno solo. Diventa un problema con progetti più grandi con più contributori. –
Grazie per la risposta e il commento in più sulla struttura della vista. Vado con la tua idea e creo la funzione all'interno del javascript. Grazie! – dk123