从javascript加载Meteor渲染加载模板

Meteor render loading template from javascript

本文关键字:加载 Meteor javascript      更新时间:2023-09-26

我的问题很简单,但我没有找到确切的答案。

<template name="loading">
//loading spineer
</template>

现在我需要隐藏和显示此模板,并准备好订阅。如何从javascript渲染加载模板。我试过

{{#unless Template.subscriptionsReady}}
 {{> loading}}
{{/unless}}

{{#If Template.subscriptionsReady}}
 {{> loading}}
{{else}}
 content
{{/if}}

但在我的情况下,不需要#unless#if。必须从脚本中加载。

您可以使用Blaze.render()Blaze.renderWithData()函数从JS中呈现模板。

官方流星文档描述了如何使用它
http://docs.meteor.com/#/full/blaze_render

示例:

// This will render your template to the body and remove it after 3000ms
var view = Blaze.render(Template.loading, document.getElementsByTagName('body')[0]);
setTimeout(function() { Blaze.remove(view) }, 3000);

非常简单。查看由Handlebars构建的Spacebars。

{{#if Template.subscriptionsReady}}
  {{> notLoading}}
{{else}}
 {{> loading}}
{{/if}}

您可以通过使用Blaze.render从javascript加载模板。在html中,创建一个div并为其分配一个id,比如"rendertemplatehree"。

HTML:

<div id="rendertemplatehere"></div>

在javascript中,在编写逻辑之后,每当您想要呈现模板时,在订阅准备好之后,执行

Javascript:(来自webdeb对同一问题的回答的帮助)

    var view = Blaze.render(Template.loading, document.getElementById('rendertemplatehere'));

而且,如果你想删除模板(如果它已经呈现),当你的订阅到期/还没有准备好时,执行

Javascript:

Blaze.remove(view);