Knockout自定义绑定更新无法正常工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Knockout自定义绑定更新无法正常工作相关的知识,希望对你有一定的参考价值。
我想为hasFocus添加一个自定义绑定器,就像这样工作
ko.bindingHandlers.hasfocus = {
//update the control when the view model changes
update: function (element, valueAccessor) {
ko.unwrap(valueAccessor());
alert('update');
setTimeout(function () {
alert(3);
if (value
&& element.offsetWidth && element.offsetHeight
&& document.activeElement && document.activeElement != element) {
element.focus();
ko.utils.triggerEvent(element, "focusin"); // For IE, which doesn't reliably fire "focus" or "blur" events synchronously
}
});
}
};
但它永远不会进入这个功能。我正在关注这个例子
http://jsfiddle.net/mbest/tAGmp/
问题是,我的输入字段在开始时不可见。如果我点击某个地方,那么它就可见了。输入字段如下所示
<input type="text" data-bind="hasFocus: true" />
我试图让它与硬代码值一致工作。如果它有效,那么我会把它改成一些可观察的。有什么想法吗?
答案
我在这里更新了小提琴。正如您在控制台中看到的那样,最初会在输入值时触发它。
ko.bindingHandlers.hasfocus = {
update: function(element, valueAccessor) {
console.log('update');
var value = ko.utils.unwrapObservable(valueAccessor());
setTimeout(function() {
if (value
&& element.offsetWidth && element.offsetHeight
&& document.activeElement && document.activeElement != element)
{
element.focus();
ko.utils.triggerEvent(element, "focusin"); // For IE, which doesn't reliably fire "focus" or "blur" events synchronously
}
},0);
}
};
希望这会有所帮助。
以上是关于Knockout自定义绑定更新无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
带有复选框和自定义适配器的 ListView,片段无法正常工作