流星/把手#if不自动更新

时间:2013-03-27 12:33:17

标签: meteor handlebars.js

我刚刚开始使用Meteor,我有点困惑;我不确定这是Meteor问题还是Handlebars问题。

我正在尝试创建一个嵌套菜单(一组可点击的div,每个div都切换一个由更多可点击的div组成的子菜单)。我希望默认情况下隐藏子菜单,但在用户单击其父级时显示。

这就是我所拥有的:

Template.sidebutton.events({
    click : function() {
        this.clicked = !this.clicked;
        clickHandlers[this.label]();
    }
})

<template name = "sidebutton">
    <div class = "sidebutton" id = "sidebutton_{{label}}"><p>{{label}}</p></div>
    {{#if clicked}}
        {{#each submenus}}
            {{> submenu}}
        {{/each}}
    {{/if}}
</template>

我已经确认点击时会触发onclick功能;切换this.clicked并调用我的点击处理程序。我还验证了如果我删除#if块或者如果我在初始页面加载时单击为true,则会出现子菜单。但是当我点击时,子菜单不会出现。

我还需要做些什么吗?我发现的关于Meteor的一切似乎暗示如果我改变任何数据,受影响的对象会被重新渲染,但看起来它们并没有在这里重新渲染。

1 个答案:

答案 0 :(得分:0)

我认为“clicked”在你的mongodb db collection元素中,在这种情况下,你不能像你那样改变它的值。你必须这样称呼:

myCollection.update(_id, {clicked:!clicked});