同步视图/数据加载

时间:2012-11-29 08:53:00

标签: javascript ajax

我要执行2次AJAX调用:

  1. 加载HTML部分模板。
  2. 为模板加载JSON数据并将其渲染到加载的模板中。
  3. JSON应该与模板分开加载,因为用户可以触发某种“刷新”操作。模板无法在第一页加载时加载,因为页面上有选项卡控件,每个选项卡都应“按需”加载。

    所以让我们说一些function loadData被调用。所以我需要做以下事情:

    1. 如果已加载模板,则转到步骤3。
    2. 使用$().load发送AJAX模板,同时使用$.getJSON 发送AJAX for JSON数据。事实是我们可以将它们一起发送而无需等待加载模板,我是对的吗?
    3. 如果加载了JSON,请检查模板是否已在此处。如果是,则将数据渲染到模板中。等等模板已加载,然后成功呈现数据。
    4. 所以我想知道这种活动的最佳做法是什么?它有完整的解决方案吗?

      提前谢谢。

1 个答案:

答案 0 :(得分: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.
        });
}