我的模板无法识别变量。为什么会这样?

时间:2013-12-16 20:57:10

标签: javascript meteor handlebars.js

我的车把模板有这样的东西:

Template.test.people

<template name="test">
<ul>
    {{#each people}}
         {{ name }} //name is present in every object in the Template.test.people array.
    {{/each}}
</ul>
</template>

当用户点击按钮时,Template.test.people变量在运行时的某个时刻被实例化(Template.test.people = [...])。此时,上述无序列表将被取消隐藏。然而,该列表显示为空列表!

但是,即使我可以转到控制台并读取Template.test.people变量的值,此时也可以清楚地看到它有信息。变量是一个对象数组。

我尝试了另一种解决方法,只是为了确保事情得到更新&#34;,并通过类似的函数传递我的变量:

Template.test.helper = function(){
   return Template.test.people;
}

然后将模板更改为:

<template name="test">
<ul>
    {{#each helper}}
         {{ name }}
    {{/each}}
</ul>
</template>

也没用。

1 个答案:

答案 0 :(得分:2)

简单地重新分配静态模板数据不会触发任何类型的反应重新计算。将对象存储在Session,集合或其他响应数据源中:

Template.test.people = function() {
  return Session.get( "people" );
};

Template.test.events({
  "click #the-button": function() {
    Session.set( "people", [{ foo: "bar" }, { baz: "qux" }] );
  }
});