如何防止在执行knockout绑定之前显示Html

she*_*nku 67 knockout.js

我在我的Html中使用以下敲除脚本:

<!-- kno ifnot: bla -->

 <tr><td>some stuff</td></tr>

<!-- /ko -->
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在执行绑定之前,此行将显示一两秒钟.

我怎样才能防止这种情况发生?

Jef*_*ado 153

这是一个简单的技巧.只需使您的根元素最初隐藏,并将可见绑定设置为true.

<div style="display: none;" data-bind="visible: true">
    <!-- the rest of your stuff -->
</div>
Run Code Online (Sandbox Code Playgroud)

当它被渲染时,在击倒之前完成它的事情,它最初将被隐藏.应用绑定时,knockout将覆盖样式并使其可见.


或者,您可以将视图放入脚本块并通过模板实例化它.脚本块将不会呈现,但在敲除呈现模板时将可见.

<!-- ko template: 'myView' --><!-- /ko -->
<script id="myView" type="text/html">
    <!-- the rest of your stuff -->
</script>
Run Code Online (Sandbox Code Playgroud)

  • 我比Tom的解决方案更喜欢这个,因为它只依赖于淘汰来取消隐藏HTML. (9认同)
  • 请注意,这仅在您使用 _inline_ 样式设置 `display: none` 时才有效。(背景:通过类样式隐藏元素不起作用,因为当通过绑定使元素可见时,Knockout_remove_“display”内联样式。然后您的类样式将接管并永远隐藏该元素。) (2认同)