显示和隐藏模板时附加的Meteor多事件处理程序

时间:2016-04-05 15:46:37

标签: events meteor meteor-blaze spacebars

我在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中隐藏或删除?

0 个答案:

没有答案