我在一个文本框上有一个焦点数据绑定,在键入一些文本后,单击另一个文本盒,焦点不会改变,直到您再次单击。不管你在哪里点击,第一次点击似乎都不会改变焦点。
这里有一个jsfiddle演示http://jsfiddle.net/9LuJy/1/.
以下是导致此问题的视图模型。
var viewmodel = function() {
var self = this;
self.fields = ko.observableArray();
self.fields.push(new Field());
}
var Field = function() {
var self = this;
self.isFocus = ko.observable(false);
self.textValue = ko.observable();
}
这是html
<div data-bind="foreach: fields">
<input type="text" data-bind="hasfocus: isFocus, value: textValue" />
</div>
<input type="text" />
我想这可能是在打字后更新可观察到的,所以可能需要一些延迟?
V2.3中修复的已知问题
在Firefox、Internet Explorer和Chrome之外,我只在Chrome中注意到了这个问题。考虑到小提琴中使用的Knockout版本(2.2.1
),我发现这篇评论与所描述的行为有关。升级版本将解决此问题。
替代解决方案
如果升级版本不是一个可行的选项,则可以考虑添加valueUpdate: 'afterkeydown'
。