强制要求Meteor在需要时渲染手柄条模板

6
如何通过 JavaScript 强制重新渲染 Meteor 模板(handlebars 模板)?例如,
我有一个模板(template1.html)。
<template name="template1">
</template>

我想在我的/client目录的任何地方强制渲染此模板。在handlebars包中有什么可以做到这一点的吗?
编辑:添加更多细节
我第一次创建此模板时没有遇到任何困难,无论是通过Handlebars还是JavaScript。我想刷新模板并再次运行我的rendered回调。当该模板被呈现时,我有代码会获取和显示相关数据。
<template name="template1">
     {{each items}}
      {{> template2}}
     {{/each}}
 <template/>

如果items中的数据发生了任何更改,那么我理解template1和template2都会渲染。但是当template2中有任何数据发生更改时,我想再次刷新/渲染template1,这会发生什么?
2个回答

7

对于新版本的Meteor,请使用UI.render()和UI.insert()




defunc - 适用于不使用blaze的Meteor版本

您能提供更多上下文吗?

在html文件中,要呈现该模板,只需使用以下代码:

<div id="somediv">
    {{> template1}}
</div>

如果你想通过JavaScript实现这个功能,一种方法是:
$('#somediv').html(Meteor.render(Template.template1));

请看:

1
是的,谢谢你提供的JavaScript函数。它为我解决了一个问题 :) - supertopi

1

在模板2中发生了什么变化,你会在模板1中看到什么?下面的操作将在插入或删除时刷新模板1。

<template name="template1">
  {{itemsCount}} items
  {{#each items}}
  {{> template2}}
  {{/each}}
<template/>

或者,
    <template name="template1">
      Last updated: {{lastUpdate}}
      {{#each items}}
      {{> template2}}
      {{/each}}
    <template/>

    Template.template1.lastUpdate = function () {
      return Session.get('lastUpdate');
    };

然后在某个地方更新您的数据添加:
    Session.set('lastUpdate', new Date() );

这与非Mongo相关的数据有关,而是使用AJAX方法从API获取数据。我正在尝试获取该数据并按需重新呈现。 - Warz
1
你可以轮询数据,然后使用第二个功能——在会话中设置某些内容(可能只是一个无意义的标志),引用它的模板将重新触发。不要把它看作重新渲染,而是把它看作改变数据并观察一些模板重新显示自己。替代会话响应性的方法是学习deps,http://docs.meteor.com/#deps_autorun,或将检索到的数据添加到本地集合中。 - Jim Mack
我最终确实使用了Deps.autorun来运行一个响应式计算,其中包含一个类似于您在最后一条评论中提到的会话变量,这对我非常有效。谢谢。 - Warz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接