2012-03-07 79 views
14

我對KnockoutJS很新穎,我喜歡迄今爲止所見到的。 當前,當View Model的可觀察屬性綁定到 文本框的文本屬性(input type = text)時,ViewModel 僅在文本框的blur事件中得到更新。有沒有辦法讓 更新文本框更改事件的視圖模型?我嘗試了 創建了一個自定義綁定處理程序,用於在「init」文本框中連接更改事件 處理程序,但它以某種方式無法正常工作。 這是否正確實現了這個目標?還是有更簡單的方法?KnockoutJS - 更新文本框值而不是OnBlur的ViewModel OnChange選項

回答

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

謝謝@KodeKreachor,那就像一個魅力! – 2012-03-07 16:13:27

+0

請小心,因爲這不能保證100%更新,例如如果用戶使用上下文菜單進行粘貼,則這不起作用。 – 2016-09-08 11:54:59

6

上面沒有同時從複製粘貼工作鼠標,因此您需要在valueUpdate中傳遞事件。 如..

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

嘗試這裏http://jsfiddle.net/uJCQq/4/

+0

謝謝,非常幫助我! – WhatsInAName 2015-04-30 21:24:41