0

2 つの AJAX 呼び出しを実行します。

  1. HTML 部分テンプレートを読み込みます。
  2. テンプレートの JSON データを読み込み、読み込まれたテンプレートにレンダリングします。

ユーザーは何らかの「更新」アクションをトリガーできるため、JSON はテンプレートとは別にロードする必要があります。ページにタブ コントロールがあり、すべてのタブを「オンデマンド」でロードする必要があるため、最初のページのロード時にテンプレートをロードできません。

function loadDataそれで、いくつかが呼び出されたとしましょう。だから私は次のことをする必要があります:

  1. テンプレートが既にロードされている場合は、ステップ 3 に進みます。
  2. AJAX for template using$().loadと AJAX for JSON data using$.getJSON を同時に送信します。実際、テンプレートがロードされるのを待たずに両方を一緒に送信できますよね?
  3. JSON が読み込まれている場合は、テンプレートが既にここにあるかどうかを確認します。その場合は、データをテンプレートにレンダリングします。それ以外の場合は、テンプレートが読み込まれるのを待ってから、成功時にデータをレンダリングします。

では、そのような活動のベストプラクティスは何だろうか? それに対する完全な解決策はありますか?

前もって感謝します。

4

1 に答える 1

0

はい。jQuery Deferreds (http://api.jquery.com/category/deferred-object/) を使用して、これらすべてを調整できます。

JS コード:

var templatePromise = null;

function loadData() {
    if (!templatePromise) {
        templatePromise = $.get('templateUrl');
    }

    var dataPromise = $.getJSON('dataUrl');

    $.when(templatePromise, dataPromise)
        .done(function (template, data) {

            // you have both template and data. 

        })
        .fail(function () {
            // either the template or the data failed to be fetched properly.
        });
}
于 2012-11-29T09:06:16.573 に答える