如何防止放映的Html执行淘汰赛结合之前(How to prevent Html showing b

2019-07-03 12:13发布

我使用我的HTML下面的淘汰赛脚本:

<!-- kno ifnot: bla -->

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

<!-- /ko -->

我的问题是,绑定在执行前该行会显示一两秒钟。

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

Answer 1:

这里有一个简单的一招。 只是让你的根元素最初是隐藏的,并设置明显的结合真。

<div style="display: none;" data-bind="visible: true">
    <!-- the rest of your stuff -->
</div>

因为它的渲染,淘汰赛就执行之前,最初将隐藏。 当应用绑定,淘汰赛将覆盖风格,使其可见。


或者,你可以把你的看法变成一个脚本块,并通过模板实例化。 该脚本块不会被渲染,但在淘汰赛渲染模板将是可见的。

<!-- ko template: 'myView' --><!-- /ko -->
<script id="myView" type="text/html">
    <!-- the rest of your stuff -->
</script>


Answer 2:

既然你要经常的行为变化一页一页 - 这是我在我的布局/模板文件(ASP.NET)正在做的。

 <div class="ko-unbound" data-bind="css: { 'ko-unbound': false, 'ko-bound': true }">
    @RenderBody()
 </div>

当页绑定:

  • ko-unbound类是从该页面(最初加入的去除了class属性)。
  • ko-bound类添加到页面。

然后在一个页面,不需要的内容是一个问题,我可以自定义的CSS来显示或隐藏基于这两个类的东西。 我也用这个技术来显示“加载”的形象或者是强加的最小高度的元素。

.ko-unbound #storeWizard
{
    display: none;  // hide entire section when the page is binding
}

.ko-bound #loadingGraphic
{
    display: none;  // hide loading graphic after page is bound
}

在测试过程中,应用绑定,当我加了超时,所以我可以看到闪光。

 setTimeout(function ()
 {
     ko.applyBindings(RR.VM);

 }, 300);


Answer 3:

环绕你的HTML是这样的 -

<div id="hideme" style="display:none">
</div>

然后,在JavaScript中添加以下的jQuery行你所适用绑定后 -

$('#hideme').show(); 

这是我发现,工作的最简单的方法。 你可以用一些淘汰赛绑定做到这一点,但你失去了保证时间,因为为了绑定执行你无法控制。



Answer 4:

另一种解决方案,我发现在这里

<div id="binding-start" style="visibility:hidden" data-bind="attr: { 'style': 'visibility:visible' }" />

这样做的好处 - 或劣势,根据您的需求 - 这空间将被保留,隐藏内容。 该页面将不会“跳”在应用绑定。



文章来源: How to prevent Html showing before knockout binding is executed
标签: knockout.js