Meteorjs加载消息

时间:2013-01-05 11:24:49

标签: meteor

我构建了应用程序并且花了很多时间从mongodb加载初始数据集,我想显示loadin gif直到数据加载完成。你可以帮我这么做吗?

2 个答案:

答案 0 :(得分:8)

Session函数的onReady()回调中使用Meteor.subscribe(),该函数在订阅完成时调用。

Meteor.subscribe('subscribe_to_this', function onReady(){
         // set a session key to true to indicate that the subscription is completed.
         Session.set('subscription_completed', true);
});

然后将此会话值从模板助手返回为:

Template.myTemplate.isSubscriptionComplete = function(){
     return Session.get('subscription_completed'); 
}

现在在你的html中,如果没有加载数据或者渲染模板,如果数据已经完成加载,很容易显示加载器。

<template name="myTemplate">
    {{#if isSubscriptionComplete }}
          <!-- Data loading is done, so render your template here -->
          {{> yourFinalTemplate}}
    {{else}}
          <!-- Data loading still remaining, so display loader here -->
         <img src="images/load.gif">
    {{/if}}
</template>

答案 1 :(得分:2)

这可以使用Session变量完成。这只是一个让你入门的例子:

在您的客户端代码中:

var yourData;

Meteor.startup(function() {
  Session.set("dataLoaded", false);
});  

...

// Load your initial data
yourData = SampleCollection.find(query).fetch();
Session.set("dataLoaded", true);

示例模板:

<template name="main">
  {{#if dataLoaded}}
     <h1>Welcome to my application!</h1>
     Your data:
     {{#each yourData}}
       ...
     {{/each}}    
  {{else}
     <div>Loading data...</div>
  {{/if}}
</template>

模板助手:

Template.main.dataLoaded = function() {
  return Session.get("dataLoaded")
}

Template.main.data = function() {
  return yourData;
}