2012-03-07 30 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