我使用我的HTML下面的淘汰赛脚本:
<!-- kno ifnot: bla -->
<tr><td>some stuff</td></tr>
<!-- /ko -->
我的问题是,绑定在执行前该行会显示一两秒钟。
我怎样才能防止这种情况发生?
我使用我的HTML下面的淘汰赛脚本:
<!-- kno ifnot: bla -->
<tr><td>some stuff</td></tr>
<!-- /ko -->
我的问题是,绑定在执行前该行会显示一两秒钟。
我怎样才能防止这种情况发生?
这里有一个简单的一招。 只是让你的根元素最初是隐藏的,并设置明显的结合真。
<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>
既然你要经常的行为变化一页一页 - 这是我在我的布局/模板文件(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);
环绕你的HTML是这样的 -
<div id="hideme" style="display:none">
</div>
然后,在JavaScript中添加以下的jQuery行你所适用绑定后 -
$('#hideme').show();
这是我发现,工作的最简单的方法。 你可以用一些淘汰赛绑定做到这一点,但你失去了保证时间,因为为了绑定执行你无法控制。
另一种解决方案,我发现在这里
<div id="binding-start" style="visibility:hidden" data-bind="attr: { 'style': 'visibility:visible' }" />
这样做的好处 - 或劣势,根据您的需求 - 这空间将被保留,隐藏内容。 该页面将不会“跳”在应用绑定。