我有一个像这样的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 -->

07-24 09:43
查看更多