2012-03-07 4 views
14

Jestem całkiem nowy w KnockoutJS i kocham to, co widziałem do tej pory. Obecnie, gdy obserwowalna właściwość Modelu widoku jest powiązana z właściwością tekstową pola tekstowego (typ wejściowy = tekst), ViewModel jest aktualizowany tylko w przypadku rozmycia w polu tekstowym. Czy istnieje sposób, aby zaktualizować model widoku w zdarzeniu zmiany pola tekstowego na ? Próbowałem tworzenie niestandardowego programu obsługi powiązania na okablowanie zdarzenia zmiany w polu tekstowym w "init", ale jakoś nie działa. Czy poprawne jest osiągnięcie tego celu w postaci ? A może jest łatwiejszy sposób?KnockoutJS - Aktualizowanie ViewModel OnChange wartości textbox zamiast OnBlur Options

Odpowiedz

21

Można też użyć „wartość” wiążącej i dodać atrybut wiązania valueUpdate, aby określić, kiedy należy zaktualizować sterowania:

Zobacz tutaj: 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

Dziękuję @KodeKreachor, który działa jak czar! –

+0

Uważaj, ponieważ nie gwarantuje to 100% aktualizacji, np. jeśli użytkownik wklei menu kontekstowe, nie zadziała. –

6

Przede nie działa podczas kopiowania pasty z myszy, więc musisz przekazać zdarzenia w valueUpdate. jak ..

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

Spróbuj tutaj http://jsfiddle.net/uJCQq/4/

+0

Dzięki, pomógł mi niesamowicie! – WhatsInAName