【问题标题】:Load part of page separately after page load in meteor在流星页面加载后单独加载部分页面
【发布时间】:2015-11-03 20:58:00
【问题描述】:

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

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

我想在页面加载时加载 post,在完全加载后加载 cmets。 (像disqus评论系统在整个页面加载后加载)

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

【问题讨论】:

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


    【解决方案1】:

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

    .js 文件(会话)

    Template.post.onRendered(function() {
        Session.set("postRendered", true);
    });
    
    Template.singlePostPage.helpers({
        postRendered: function() {
            return Session.get("postRendered");
        }
    });
    

    只需确保在首次加载 singlePostPage 模板时将 postRendered 会话变量设置为 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>
    

    【讨论】:

    • 我觉得这里用reactiveVar比较好
    • 感谢您的关注。我想在 singlePostPage 加载后获取 cmets 数据。添加订阅和查询 cmets 的最佳位置在哪里?
    猜你喜欢
    • 1970-01-01
    • 2017-07-19
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多