"disable" 绑定
disable
绑定和 enable
绑定正好相反,使DOM元素只有在参数值为 true
的时候才禁用。在form表单元素 input
, select
, 和textarea
上非常有用。
这里不再举例,请参考enable
绑定。
"value" 绑定
之前我们接触过text binding,它可以绑定到DOM元素的文本内容,但是如果我们的UI元素是form的元素,特别是input,select,textarea的时候,就需要用到value binding了.
- 可以绑定一个DOM的value值,或者一个js express(表达式)。
- 如果绑定的是一个observable变量,则ko会负责跟踪变量值的变化,动态修改DOM元素的value属性。
基本用法
Html代码
<p>Login name: <input data-bind="value: userName" /></p> <p>Password: <input type="password" data-bind="value: userPassword" /></p>Js代码
var viewModel = { userName: ko.observable("aaa"), // 初始化为空 userPassword: ko.observable("abc"), //初始密码 }; ko.applyBindings(viewModel);
使用valueUpdate设置更新时机
一般情况下,当我们为一个文本框设置了value绑定时,并且绑定的属性是observable的,那么当输入内容后焦点离开文本框时才会自动更新属性。ko提供了valueUpdate
属性,通过设置这个属性我们可以有选择的控制这个更新时机。
下面是valueUpdate
属性可选的值:
-
"change"
(默认) - 当失去焦点的时候更新view model的值,或者是<select>
元素被选择的时候。 -
"keyup"
- 当用户敲完一个字符以后立即更新view model。 -
"keypress"
- 当用户正在敲一个字符但没有释放键盘的时候就立即更新view model。不像keyup
,这个更新和keydown是一样的。 -
"afterkeydown"
- 当用户开始输入字符的时候就更新view model。主要是捕获浏览器的keydown
事件或异步函数事件。
如果你想让你的view model进行实时更新,使用 "afterkeydown"
是最好的选择。
例子`:
Html代码
<p>Login name: <input data-bind="value: userName,valueUpdate: 'afterkeydown'" /></p> <p>同步显示Login name: <span data-bind="text: userName"></span> </p>Js代码
var viewModel = { userName: ko.observable("") }; ko.applyBindings(viewModel);