2012-03-07 3 views
14

私はKnockoutJSにはかなり新しく、これまで見たことが大好きです。 現在、View Modelのobservableプロパティが のテキストボックス(input type = text)のtextプロパティにバインドされている場合、ViewModel はテキストボックスのblurイベントでのみ更新されます。 テキストボックスの変更イベントでビューモデルを更新する方法はありますか?私は、 "init"のテキストボックスに変更イベント ハンドラを配線する際にカスタムバインディングハンドラを作成しようとしましたが、何とかうまく動作しませんでした。この目標を達成するためには が正しいですか?それとも簡単な方法がありますか?KnockoutJS - ViewModelを更新するOnBlurオプションの代わりにテキストボックス値を変更する

答えて

21

また、バインディング「の値を」を使用して、コントロールを更新する際に指定するvalueUpdate結合属性を追加することができます。

はこちらをご覧ください: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

http://jsfiddle.net/uJCQq/4/があなたに魔法のように動作@KodeKreachorを、ありがとうここにお試しください! –

+0

100%の更新を保証するものではないため、注意してください。コンテキストメニューを使用してペーストすると、これは機能しません。 –

6

からコピーペーストしながら、動作していませんマウスを使用して、valueUpdateでイベントを渡す必要があります。 のような..

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

+0

ありがとう、私を大いに助けてくれた! – WhatsInAName

関連する問題