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

Template syntax in Meteor.js is not recognized?

本文关键字:语法 识别 js Meteor      更新时间:2024-05-13

首先,我想说的是,我对Meteor.js没有太多经验,只是在不久前开始使用,而且不经常使用。所以,如果这个问题看起来很愚蠢或显而易见,请原谅我。

我正试图访问我的模板中的{{#each}}个助手(模板名称为目录):

{{#each teachers}}
    <h1>{{name}}</h1><br />
    <p>{{description}}</p>
{{/each}}

因此,为了参考这一点,我输入了以下代码:

Template.directory.teachers = function(){
}

但Meteor抛出了以下异常:"ReferenceError:未定义模板"

有人知道我在这里做错了什么吗?再次,如果答案很明显,我很抱歉。我正在运行最新的windows版本,并且我的所有软件包都已更新。感谢您的帮助:)

您的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'];
  }
});

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

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

这不是定义助手的方式。通过将对象传递给助手函数来定义助手

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