在单击事件更新模板上

时间:2013-01-22 21:03:38

标签: mongodb meteor

我在研究一个流星的例子。我在链接上的click事件中获得了一个标记的值。该值与doc“pet”或“zoo”中的一个集合中的值相同。我想使用此值来过滤模板上的内容。

一个最小的例子:

    {{#each Animal}}
        <div>
          <span> {{pet}} </span> 
        </div>
        <div>
          <span> {{zoo}} </span> 
        </div>
    {{/each}}

点击后:

{{#each Animal}}
        <div>
          <span> {{zoo}} </span> 
        </div>
    {{/each}}

在这种情况下,当我得到“zoo”中存在的值时,我只想用包含doc zoo上所有元素的所有跨度来更新模板,并且所有与宠物相关的内容都会消失。

对mongodb的查询工作正常,我的问题是我有点困惑。

我应该使用助手吗?

非常感谢你。

1 个答案:

答案 0 :(得分:2)

让我们看看我是否理解你的问题。

您应该使用Session变量来存储您正在执行的操作。然后添加模板if并在此标记内打印当时要显示的内容。

让我们做一个最小的例子:

<template name="showAnimalsTemplate">
   {{if showAnimals}}
   {{#each Animal}}
      <div>
        <span> {{pet}} </span> 
      </div>
      <div>
        <span> {{zoo}} </span> 
      </div>
   {{/each}}
   {{/if}}
   {{if showZoo}}
   {{#each Animal}}
      <div>
        <span> {{zoo}} </span> 
      </div>
   {{/each}}
   {{/if}}

按照此示例,您在客户端javascript中添加如下内容:

 Template.showAnimalsTemplate.showAnimals = function(){
     if( Session.get('action') == 'showingTheZoo')
           return true;
     return false;
 }

 Template.showAnimalsTemplate.showZoo = function(){
     if( Session.get('action') == 'showingTheZoo')
           return true;
     return false;
 }

不要忘记在点击事件中设置会话值。

Session.set('action', 'showingTheZoo');