来自javascript

时间:2015-11-25 03:17:07

标签: javascript meteor meteor-blaze

我的问题非常简单,但我找不到确切的答案。

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

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

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

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

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

3 个答案:

答案 0 :(得分:0)

很简单。查看Spacebars内建的Handlebars

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

答案 1 :(得分:0)

您可以使用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);

答案 2 :(得分:0)

您可以通过起诉Blaze.render从javascript加载模板。 在你的html中,创建一个div并为其分配一个id,比如说“rendertemplatehere”。

HTML:

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

在javascript中,在编写逻辑之后,无论何时想要渲染模板,在订阅准备就绪后,执行,

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

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

并且,如果要删除模板(如果已经呈现),当订阅到期/未准备好时,执行,

使用Javascript:

Blaze.remove(view);