【问题标题】:How to wait for child data in meteor before showing content如何在显示内容之前等待流星中的子数据
【发布时间】:2015-11-11 17:47:49
【问题描述】:

我的页面有一个部分,其中包含用户拥有的 10 款游戏。游戏使用 gameId 附加了成就。目前,我正在单独订阅每款游戏的成就。这是通过使用{{#each gamesList}} {{> oneGame}} {{/each}}Template.oneGame.onCreated = function() { this.subscribe('gameAchievements', this.data.gameId); } 完成的。在这种情况下,gamesList 是一个帮助器,它返回 10 个订阅的游戏记录。这对于获取数据并显示它很好,但是我无法创建一个加载屏幕,该屏幕将显示到每个孩子订阅(对于 10 个游戏中的每一个的成就)。在所有子订阅完成加载之前,如何在父模板上显示加载微调器?

【问题讨论】:

标签: meteor spacebars


【解决方案1】:

我是否可以建议您通过返回 gameAchievementsgameList 光标来规避这种复杂性和延迟?使用reywood:publish-composite 与父级同时运行依赖查询。然后,您可以在等待 gameList 订阅完成时使用@jbryant04 的答案来处理微调器。您会看到更少的网络往返,并且您的代码会更简单。

【讨论】:

    【解决方案2】:

    如果您使用 Iron Router,可以查看 Iron Router 指南中的 waitOn (http://iron-meteor.github.io/iron-router/)。

    这是该指南中的代码:

    Router.route('/post/:_id', {
      // this template will be rendered until the subscriptions are ready
      loadingTemplate: 'loading',
    
      waitOn: function () {
        // return one handle, a function, or an array
        return Meteor.subscribe('post', this.params._id);
      },
    
      action: function () {
        this.render('myTemplate');
      }
    });
    

    然后在“加载”模板中,您可以使用 sacha:spin 包 (https://atmospherejs.com/sacha/spin) 来显示微调器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多