Javascript 由于整个模板重新渲染而导致输入焦点丢失

Javascript 由于整个模板重新渲染而导致输入焦点丢失,javascript,jquery,knockout.js,knockout-2.0,jquery-templates,Javascript,Jquery,Knockout.js,Knockout 2.0,Jquery Templates,我有一个JQuery模板,如下所示: <div class="editor-field"> <input data-bind="value: ValueField, valueUpdate: 'afterkeydown'" /> {{if $data.errors && $data.errors().length > 0 }} <div> an error occured </div

我有一个JQuery模板,如下所示:

<div class="editor-field">
    <input data-bind="value: ValueField, valueUpdate: 'afterkeydown'" />

    {{if $data.errors && $data.errors().length > 0 }}
    <div>
        an error occured
    </div>
    {{/if}}
</div>

{{if$data.errors&&$data.errors().length>0}
发生了一个错误
{{/if}
$data.errors
是一个开始为空的
observableArray

我已订阅了
ValueField
,并将
$data.errors
设置为
[“hello”]
。但是,当更新
observableArray
时(由于输入更改),整个模板将刷新,导致输入失去焦点

DOM树前后唯一的区别是在if块中添加了
div

尝试使用淘汰无容器控制流语法(基于注释标记),如下所示:


发生了一个错误

尝试使用敲除式无容器控制流语法(基于注释标记),如下所示:


发生了一个错误

我无法复制(使用常规
数据绑定):您的代码与此小提琴之间有任何差异吗?我无法复制(使用常规
数据绑定):您的代码与此小提琴之间有任何差异吗?
<div class="editor-field">
<input data-bind="value: ValueField, valueUpdate: 'afterkeydown'" />

<!-- ko if: $.isArray($data.errors()) && $data.errors().length > 0 -->
<div>
    an error occured
</div>
<!-- /ko -->