在流星中加载页面后分别加载页面的一部分

时间:2015-08-11 14:50:05

标签: javascript meteor iron-router meteor-blaze meteor-helper

我想用meteor创建复杂的博客页面。我有一个带有两个子模板的模板,如下所示:

<template name="singlePostPage">
    {{> post }}
    {{#each comments}}
        {{> comment}}
    {{/each}}
</template>

我想在加载页面时加载发布,并在完成后加载后加载评论。 (例如在整个页面加载后加载的disqus注释系统)

请指导我如何执行此操作以及哪些软件包可能对此方案有用?

1 个答案:

答案 0 :(得分:1)

您可以在呈现帖子模板时设置会话变量或反应变量,然后使用句柄{{#if}}根据该变量的值显示注释。像下面这样的东西应该有效。

.js文件(会话)

Template.post.onRendered(function() {
    Session.set("postRendered", true);
});

Template.singlePostPage.helpers({
    postRendered: function() {
        return Session.get("postRendered");
    }
});

首次加载postRendered模板时,只需确保singlePostPage会话变量设置为false或null。如果您想使用反应变量:

添加此包:

meteor add reactive-var

并使用此.js代码:

var postRendered = new ReactiveVar(false);
Template.post.onRendered(function() {
    postRendered.set(true);
});

Template.singlePostPage.helpers({
    postRendered: function() {
        return postRendered.get();
    }
});

对于这两个示例,您可以使用此.html文件

<template name="singlePostPage">
    {{> post }}
    {{#if postRendered}}
        {{#each comments}}
            {{> comment}}
        {{/each}}
    {{/if}}
</template>