在Meteor的不同块上使用waitOn

时间:2015-07-05 13:25:26

标签: javascript node.js meteor iron-router

我对Meteor很新。我正在使用iron-router在页面上进行路由。我总是设置waitOn属性,使页面加载直到订阅出版物。

但是在很多页面上,我看到它们分别加载面板/卡片,即页面加载但页面上的某些元素同时加载,有时会在不同时间加载。

这种行为在Meteor中是否也可以,而不是总是等待所有订阅加载才能显示页面?

2 个答案:

答案 0 :(得分:0)

很难对这个问题给出具体的答案,但渐进式加载实际上是流星的默认值。如果您subscribe in IR,全局或来自your template,文档将从服务器流向您的客户端,您的模板应在数据可用时呈现数据。请注意,在许多情况下,您需要在代码中添加一些guards才能修复某些竞争条件。

使用waitOn是订阅的一种特殊用法,您可以阻止呈现模板,直到初始文档集到达客户端。它应该用于在渐进式加载时UI没有意义的情况下(您需要一次查看所有数据)。

我希望这有助于总体概述。如果您有具体问题,请发表评论,我会尽力在需要时添加更多详细信息。

答案 1 :(得分:0)

是的,它存在我认为您正在寻找Template.subscribe http://docs.meteor.com/#/full/Blaze-TemplateInstance-subscribe

等待所有订阅是Iron-Router方式,如果你想要动态UI,网站的某些部分只是在订阅未准备好时显示加载,这里是从文档中复制的示例:

<template name="notifications">
  {{#if Template.subscriptionsReady}}
    <!-- This is displayed when all data is ready. -->
    {{#each notifications}}
      {{> notification}}
    {{/each}}
  {{else}}
    Loading...
  {{/if}}
</template>

你需要在onCreated回调中订阅

Template.notifications.onCreated(function () {
  // Use this.subscribe inside onCreated callback
  this.subscribe("notifications");
});

flow-router实际上更适合它为支持这种订阅管理而构建的这种行为。