Meteor.js中的模板语法无法识别?

时间:2015-02-25 05:15:35

标签: javascript html meteor

首先,我想提一下,我对Meteor.js没有多少经验,只是刚刚开始,而不是经常使用它。如果这个问题看似愚蠢或明显,请原谅我。

我正在尝试访问模板中的{{#each}}帮助器(模板名称是目录):

{{#each teachers}}

    <h1>{{name}}</h1><br />
    <p>{{description}}</p>

{{/each}}

所以要参考这个,我输入以下代码:

Template.directory.teachers = function(){

}

但Meteor抛出以下异常: “ReferenceError:模板未定义”

有人知道我在这里做错了吗?再次,对不起,如果答案是显而易见的。我正在运行最新的Windows版本,我的所有软件包都已更新。感谢您的帮助:)

3 个答案:

答案 0 :(得分:1)

您的directory.html文件应与以下内容类似:

<template name="directory">
    {{#each teachers}}
        <h1>{{name}}</h1><br />
        <p>{{description}}</p>
    {{/each}}
</template>

您的directory.js文件应与以下内容类似:

Template.directory.helpers({
  teachers: function () {
    return Teachers.find({}); // or as in your sample ['teacher1', 'teacher2'];
  }
});

答案 1 :(得分:1)

此错误的问题在于您尝试在服务器上调用Template对象。模板应仅存在于客户端上。所以你可以像这样包装你的代码:

if(Meteor.isClient){
Template.directory.helpers({
  teachers: function() {
    return ['teacher1', 'teacher2']; //...
  }
});
}

答案 2 :(得分:0)

这不是你如何定义助手。通过将对象传递给辅助函数

来定义助手
Template.directory.helpers({
  teachers: function() {
    return ['teacher1', 'teacher2']; //...
  }
});