Javascript Ember,异步呈现嵌套的模型集合

Javascript Ember,异步呈现嵌套的模型集合,javascript,ember.js,ember-cli,Javascript,Ember.js,Ember Cli,免责声明:这里是非常灰烬新手,所以也许我问的太基本了,但我在网上找不到任何解释 我有一个包含图表对象集合的父对象报告 当我加载URL/api/reports/001/charts时,会向api请求报告001,然后是属于此报告的所有图表,然后呈现所有内容并。。秒后,页面显示给用户 像这样: 我尝试的是提供更渐进的渲染: 报告是从API加载的 报告将通过带有加载微调器的图表元素显示给用户 每个图表都被单独请求到API中 每个图表都单独向用户显示 第3步和第4步平行进行,每个图表都是独立的 大概是这

免责声明:这里是非常灰烬新手,所以也许我问的太基本了,但我在网上找不到任何解释

我有一个包含图表对象集合的父对象报告

当我加载URL
/api/reports/001/charts
时,会向api请求报告001,然后是属于此报告的所有图表,然后呈现所有内容并。。秒后,页面显示给用户

像这样:

我尝试的是提供更渐进的渲染:

  • 报告是从API加载的
  • 报告将通过带有加载微调器的图表元素显示给用户
  • 每个图表都被单独请求到API中
  • 每个图表都单独向用户显示
  • 第3步和第4步平行进行,每个图表都是独立的

    大概是这样的:


    当然,我不想让任何人带着完整的解决方案来找我,我更多地是在寻找方向,或者寻找一些我可以找到灵感的链接。

    我们正在仪表板上做类似的事情。在路由中,我们加载用户仪表板,其中包含小部件及其位置的列表。然后在仪表板模板中,我们为每个小部件呈现组件,类似这样

    {{#each widgets as |widget|}}
      {{component widget.type widget}}
    {{/each}}
    
    然后,通过将小部件实例(具有自己的自定义设置)传递给组件,我们可以获取相关数据并显示它。每个小部件还可以有自己的“微调器”,告诉用户它仍在加载

    如果我假设您的情况稍微简单一点,因为您只显示图表,并且可能通过某种id显示,那么您可能不需要使用组件帮助器,也不需要直接引用图表组件

    {{#each charts as |chart|}}
      {{report-chart chart.id}}
    {{/each}}
    

    您好@yorbro您的插件看起来很有希望,您能用您的建议创建一个正确的答案吗?@karl johan sjögren将图表加载功能移动到组件是一个非常好的主意,我一直在使用该插件,但我开始发现问题。看起来余烬并不特别喜欢这种方法,因为为了使它工作,我不得不做一些事情(助手、模板)开始失败。我仍在尝试,我只是想分享我发现的困难。是的,在组件中加载数据不是最佳的,但在某些情况下,这是唯一可行的方法,除非你开始弄乱子例程(如果你想要一个以上的图表,这将无济于事)。为了解决事情还没有准备好的问题,你可以使用addon@yorbro建议的,或者干脆自己使用一个等待承诺完成的属性。只是不要让它在你的数据准备好之前渲染东西。仍然不能让它工作。现在的问题是
    组件
    在加载数据之前呈现,因此组件模板中的所有内部部分都会失败。我一直在检查,但我不清楚。将问题转移到