【发布时间】:2023-03-21 00:09:01
【问题描述】:
我已经在 Udemy 开始了全栈开发课程,并且有一个流星部分。当我编译代码时,它给了我以下错误:“模板助手中的异常:ReferenceError:Todos 未定义”。
我尝试在 stackoverflow 中搜索解决方案,但它们似乎都不起作用。
我曾尝试用“body”来命名模板,这是建议之一。
这是我得到的。
客户端/main.js
import { Template } from 'meteor/templating';
import { Todos } from '/lib/collections';
import './main.html';
Template.main.helpers({
title(){
return 'QuickTodos';
},
todos(){
const todos = Todos.find();
return todos;
}
});
Template.main.events({
'submit .add-todo'(event){
event.preventDefault();
const text = event.target.text.value;
const time = event.target.time.value;
Todos.insert({
text,
time
});
event.target.text.value = '';
event.target.time.value = '';
}
});
Template.todo.events({
'click .toggle-checked'(event){
Todos.update(this._id, {
$set:{checked: !this.checked}
});
},
'click .delete'(event){
Todos.remove(this._id);
}
});
客户端/main.html
<head>
<title>QuickTodos</title>
</head>
<body>
{{> main}}
</body>
<template name="main">
<header>
<h1>{{title}}</h1>
<form class="add-todo">
<input type="text" name="text" placeholder="Add Todo...">
<input type="text" name="time" placeholder="Add Time...">
<button type="submit">Add</button>
</form>
</header>
<ul>
{{#each todos}}
{{> todo}}
{{/each}}
</ul>
</template>
<template name="todo">
<li class="{{#if checked}}checked{{/if}}">
<button class="delete">×</button>
<input type="checkbox" checked={{checked}} class="toggle-checked">
<strong>{{time}}:</strong> {{text}}
</li>
</template>
lib/collections.js
import { Mongo } from 'meteor/mongo';
export const Todos = new Mongo.Collection('todos');
当我现在编译时没有错误,但是当我在浏览器控制台Todos.find().fetch() 中搜索时,它给出了这个错误:
Uncaught ReferenceError: Todos is not defined
at <anonymous>:1:1
【问题讨论】:
标签: javascript mongodb templates meteor referenceerror