1

MVC4、Knockout、およびKnockout.Mappingプラグインを使用しています。

ページの初期ロードでは、ノックアウトがレンダリングしている部分を除いてすべてがレンダリングされます。javascript/ノックアウトがこのセクションをロードするまで1〜4秒の遅延が発生する場合があります。テスト中、最初はデータがほとんどなく、これは実際には問題ではありませんでしたが、データが多いと、非常に明白で、最も重要なことに、非常に専門的ではないように見えます。

これがロードスクリプトです

<script type="text/javascript">
    $(function () {
        ordersViewModel = new ordersViewModel('@Html.Raw(JsonConvert.SerializeObject(Model))');
        ko.applyBindings(ordersViewModel);
    });
</script>

私の推測では、「表示:なし」を使用するか、JavaScriptが読み込まれるまでそのセクションを非表示にすることができます。Githubと同様に、フェッチしているコンテンツに対して読み込みダイアログが表示されます。

誰かがこの問題に遭遇し、エレガントな解決策を持っていると確信しています。

どんな助けでも大歓迎です。

乾杯、サム

4

1 に答える 1

3

あなたの質問で議論したように、私はCSSルートに行きます。最も簡単な方法は、単純に 2 つのコンテナーを用意することです。1 つは読み込み中のデータを含み、もう 1 つは典型的な読み込みメッセージを含み、おそらく読み込みが行われていることを示す gif を含みます ( http://www.ajaxload.info/にあるようなもの)。 )。

したがって、コンテナを次々と配置するだけです。

<div id="loadingMessage">
    My loading message
</div>
<div id="content" style="display: none;">
    My content
</div>

バインディングが完了したら、次の JS を実行します。

$("#loadingMessage, #content").toggle();
于 2012-12-14T07:37:23.957 に答える