3

我正在使用 Knockout 和 jQuery 开发一个单页 Web 应用程序。页面的body被划分为不同<section>的s,每个s对应于某个页面;用户一次只能看到一个部分。我们使用 Knockout 的visible绑定来隐藏和显示适当的部分,它工作正常。

问题是当页面加载时——当 HTML 已经加载但 Knockout 还没有应用它的绑定时——所有的部分都是可见的。这持续了不到一秒钟,但它是难看的。我试图设置display: none这些部分,以便它们最初是不可见的,但是Knockout 的visible绑定有一个怪癖:如果表达式的计算结果为 true,Knockoutdisplay会将 CSS 属性设置为没有 Knockout 的任何内容。

换句话说,设置data-bind="visible: true"不会覆盖display: none. 这是有道理的,因为在某些情况下,您经常需要将显示指定为不可见或,例如,table-cell但在我的情况下这很烦人。强制淘汰赛显示我的部分元素的最佳方式是什么?

4

1 回答 1

5

事实证明,虽然 Knockout 不会覆盖display: noneCSS 中的集合,例如

body > section {
    display: none;
}

如果它出现在 HTML 本身中,它将覆盖相同的样式指令:

<section style="display: none" data-bind="...">

因此,我的问题的解决方案是将display: noneCSS 文件中的 移动到style属性中。<section>然后,当我想要显示时,Knockout 会覆盖该属性以显示我的。

于 2013-02-15T18:41:50.973 回答