我有一个绑定到的文本框列表ko.observableArray
.
我必须确保文本框值不能为空,并且我使用 jQuery 通过将值设置为 0(如果它为空)来完成此操作blur()
问题是用 jQuery 完成的值更改没有通过淘汰注册。
如何观察模型中的值变化?
请参阅我的简化小提琴以了解要点 -http://jsfiddle.net/k45gd/1/ http://jsfiddle.net/k45gd/1/
HTML
<input type="number" data-bind="value: age" />
<span data-bind="text: age"></span>
<button data-bind="click: setAgeExternally">I want the label to change to 0</button>
JS
var model = function() {
this.age = ko.observable(21);
//this code is outside of the model, this is oversimplification
this.setAgeExternally = function(){
$('input').val(0);
}
};
ko.applyBindings(new model());
你需要两件事:
-
使用 jQuery 更改元素的值后,您需要让 Knockout 知道更新模型。您可以通过触发change
event:
$('input').val(0).trigger('change');
为了让 Knockout(3.1.0 之前的版本)响应 jQuery 事件,它需要知道您正在使用 jQuery。为此,您必须在 Knockout 之前将 jQuery 包含在文档中。
这是您对这两个更新的修改:http://jsfiddle.net/mbest/k45gd/2/ http://jsfiddle.net/mbest/k45gd/2/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)