我对Meteor很新。我正在使用iron-router
在页面上进行路由。我总是设置waitOn
属性,使页面加载直到订阅出版物。
但是在很多页面上,我看到它们分别加载面板/卡片,即页面加载但页面上的某些元素同时加载,有时会在不同时间加载。
这种行为在Meteor中是否也可以,而不是总是等待所有订阅加载才能显示页面?
答案 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
实际上更适合它为支持这种订阅管理而构建的这种行为。