3

Knockout と jQuery を使用して単一ページの Web アプリを開発しています。ページの本文はさまざまな に分割され<section>、それぞれが特定のページに対応します。ユーザーには一度に 1 つのセクションしか表示されません。Knockout のvisibleバインディングを使用して、必要に応じてセクションを表示および非表示にしていますが、問題なく動作します。

問題は、ページの読み込み中 (HTML は読み込まれているが Knockout がまだバインディングを適用していないとき) に、すべてのセクションが表示されることです。これは 1 秒未満続きますが、見苦しいです。最初はセクションが非表示になるようにセクションを設定しようとしましたが、 Knockout のバインディングdisplay: noneには癖があります。式が true と評価されると、Knockout は CSSプロパティを Knockout なしの場合の値に設定します。visibledisplay

つまり、設定data-bind="visible: true"は上書きされませんdisplay: none。これは理にかなっています。なぜなら、ディスプレイを非表示またはたとえば として指定する必要がある状況がよくあるからですがtable-cell、私の場合は面倒です。Knockout にセクション要素を強制的に表示させる最良の方法は何ですか?

4

1 に答える 1

5

Knockout はdisplay: noneCSS のセットをオーバーライドしませんが、たとえば、

body > section {
    display: none;
}

HTML 自体に表示される場合、同じスタイル ディレクティブをオーバーライドします。

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

したがって、私の問題の解決策はdisplay: none、CSS ファイルからstyleプロパティに移動することでした。ノックアウトは、プロパティをオーバーライドして、表示<section>したいときに my を表示しました。

于 2013-02-15T18:41:50.973 に答える