有没有办法在任何其他流星客户端代码运行之前从mongo集合中预加载数据?

时间:2016-02-29 18:34:47

标签: meteor

我很难让Template.rendered代码等待从mongo集合加载数据:

Template.chart.rendered = function(){

    var yelp_data, ndx;

    var template = this;

    template.autorun(function(){
        console.log('autorun is called');
        template.subscribe("yelp", function(){
           yelp_data = Yelp.find().fetch();
            ndx = crossfilter(yelp_data);
        });
    });

}

我可以看到,自动运行按预期调用,但是,当它完成时,yelp_data仍然是0的数组。 有没有办法强制流星等待,直到数据加载到变量?

1 个答案:

答案 0 :(得分:1)

好的,根据您的评论,请试一试:

  • 创建一个包装器模板,让它称之为chartWrapper,包装你的图表。
  • 将订阅转移到chartWrapper模板。
  • chart模板调用包含在chartWrapper的Template.subscriptionsReady助手中。

代码:

<template name="chartWrapper">
  {{#if Template.subscriptionsReady}}
    {{> chart}}
  {{/if}}
</template>

Template.chartWrapper.onCreated( function() {
    var template = this;
    template.subscribe("yelp");
});

Template.chart.onCreated( function() {
    var yelp_data, ndx;
    var template = this;
    yelp_data = Yelp.find().fetch();
    ndx = crossfilter(yelp_data);
});

我相信这会完全延迟您的chart模板,直到Yelp数据可用。