2

我有一个 ajax 请求,它返回大约 1300 个 json 对象。在这些对象中,我填充了一些 ArrayProxies 和视图。每个 ArrayProxy 和因此视图包含大约 15 个对象和有关这些对象的详细信息。

由于这里和那里的一些逻辑,我需要大约 5 秒才能加载所有数据。

现在我需要知道如何制作像加载栏这样的东西,或者至少单独渲染每个视图。

我的 ajax 加载代码很简单:

$.getJSON('http://json.url, function(data) {
    $.each(data, function(i, obj) {
        var obj = App.ObjModel.create(obj);
        if (obj.get('isCalculable')) {
            App.ObjController.addObj(obj);
        }
    });
});

但是,在某些条件返回 true 后,我如何告诉应用程序呈现视图?

感谢您的帮助,迪玛

4

2 回答 2

4

让 Ember 来确定何时加载数据。如果数据已加载,请在视图中检查,如果没有,则显示动画 gif 或其他内容。这将告诉用户数据尚未准备好。

您可以通过以下方式在您的视图中执行此操作:

{{#if controller.isLoaded}}
  Display controller.content in loop or something
{{else}}
  <img src="/spinner.gif"> Loading data...
{{/if}}

此代码示例改编自 Ember 官方网站。可以在最后找到它。

于 2012-12-03T16:44:23.953 回答
0

您可以在 div 或其他内容中使用加载图像,并在请求的开始和结束期间切换其显示。

Ajax 请求开始:

document.getElementById("LoadingImage").style.display="block";

完成后:

document.getElementById("LoadingImage").style.display="none";
于 2012-12-03T12:53:01.307 回答