2012-03-07 14 views
14

Sono abbastanza nuovo su KnockoutJS e amo ciò che ho visto finora. Attualmente, quando una proprietà osservabile del modello di vista è associata a la proprietà di testo della casella di testo (tipo di input = testo), il ViewModel viene aggiornato solo sull'evento di sfocatura della casella di testo. C'è un modo per aggiornare il modello di vista sull'evento di modifica della casella di testo? Ho provato creando un gestore di binding personalizzato sul cablaggio dell'handle del cambiamento sulla casella di testo in "init", ma in qualche modo non ha funzionato. questo è corretto per raggiungere questo obiettivo? O c'è un modo più semplice?KnockoutJS - Aggiornamento ViewModel OnModifica del valore della casella di testo anziché delle opzioni OnBlur

risposta

21

È possibile anche utilizzare un 'valore' vincolante e aggiungere l'attributo di legame valueUpdate per specificare quando aggiornare il vostro controllo:

Vedi qui: http://knockoutjs.com/documentation/value-binding.html

<p>Your value: <input data-bind="value: someValue, valueUpdate: 'afterkeydown'" /></p> 
<p>You have typed: <span data-bind="text: someValue"></span></p> <!-- updates in real-time  --> 

<script type="text/javascript"> 
var viewModel = { 
    someValue: ko.observable("edit me") 
}; 
</script> 
+1

Grazie @KodeKreachor, che funziona come un fascino! –

+0

Fai attenzione perché questo non garantisce il 100% di aggiornamento, ad es. se un utente incolla usando un menu contestuale, questo non funzionerà. –

6

Sopra non è un lavoro, mentre copia incolla da mouse quindi è necessario passare gli eventi in valueUpdate. come ..

<p>Your value: <input data-bind="value: someValue, valueUpdate:['afterkeydown','propertychange','input']" /></p> 

provare qui http://jsfiddle.net/uJCQq/4/

+0

Grazie, mi ha aiutato moltissimo! – WhatsInAName

Problemi correlati