我有一个像这样的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>
$data.errors
是开始为空的observableArray
。我已订阅
ValueField
并将$data.errors
设置为[ "hello" ]
。但是,当observableArray
更新时(由于输入更改),整个模板将刷新,从而导致输入失去焦点。DOM树之前和之后的唯一区别是在块内添加了
div
。 最佳答案
尝试使用Knockout无容器控制流语法(基于注释标记),如下所示:
<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 -->