我有两个备用模板的布局:
<template name="MyLayout">
{{#if myBoolean}}
{{> template1}}
{{else}}
{{> template2}}
{{/if}}
</template>
当我将布尔值切换为true(初始化为false)时,会触发Template.template1.rendered = function () {};
。但是当我将其切换为false时,不会触发Template.template1.destroyed
挂钩。当我将其切换回true时,Template.template1.rendered
事件也不会被触发。
问题是我使用rendered
钩子来启动一些动画。所以我的template1在我第一次将布尔值切换为true时显示,而不是在以下开关上显示。
在0.8之前,渲染的事件被调用了很多。现在它有点少。当它不在DOM中时,是否有一个选项可以用来销毁我的模板?
答案 0 :(得分:1)
MasterLayout仍在那里;只有子模板已被销毁。您可以使用子模板rendered
/ destroyed
处理程序。如果动画仅与父模板元素相关,则您可能能够创建一个自动运行功能,该功能根据您的反应式布尔变量启动动画。例如,假设您的布尔值是Session
变量(尽管它可以与任何反应变量一起使用):
Deps.autorun(function() {
if (Session.get("myBoolean")) {
// start animation
}
});
现在,只要你Session.set("myBoolean", true)
,动画就会运行。