我在Meteor中遇到嵌套模板的问题。
如果我有这样的模板,其中有一个子模板:
在parentTemplate.js
中>>> for person in j['people']:
for group in person['person']['groups']:
print('Name : {} --- ID: {}'.format(group['name'], group['id']))
Name : acctg --- ID: 133
Name : mgr --- ID: 207
在childTemplate.js中:
{{#if showParentTemplate}}
{{> parentTemplate}}
{{/if}}
<template name="parentTemplate">
{{> childTemplate}}
</template>
当我在元素上注册一个click事件(在这个例子中为锚点),然后在DOM上显示/隐藏父模板时,每次我向父母显示父节点时,我最终会在锚点上添加一个额外的事件监听器DOM。我检查了Template.parentTemplate.onDestroy()并且它正在触发。这应该意味着模板及其事件正在被销毁。我想成像,包括摧毁儿童模板及其事件。
这是click事件的简单处理程序
<template name="childTemplate">
<a class="someItem" href="#"></a>
</template>
为了澄清,我在onCreated方法中附加了事件监听器,而不是onRendered方法。
我看到每次显示parentTemplate时,childTemplate都会触发onCreated事件,然后触发多个onRendered事件。每次隐藏/显示parentTemplate都会添加一个新的onRendered。
我有什么基本的东西在这里缺失。看起来几乎就像DOM上有多个模板实例,或者事件永远不会被销毁。有没有一种正确的方法来破坏Meteor模板从DOM中隐藏或删除?