此代码:
//hello.js
import { Meteor } from 'meteor/meteor';
import { Template } from 'meteor/templating';
import './hello.html';
Template.hello.onCreated(function helloOnCreated() {
// counter starts at 0
this.counter = new ReactiveVar(0);
});
Template.hello.helpers({
counter() {
return Template.instance().counter.get();
},
});
Template.hello.events({
'click button'(event, instance) {
// increment the counter when button is clicked
instance.counter.set(instance.counter.get() + 1);
},
});
<!-- hello.html -->
<body>
<h1>Welcome to Meteor!</h1>
{{> hello}}
{{> info}}
</body>
<template name="hello">
<button>Click Me</button>
<p>You've pressed the button {{counter}} times.</p>
</template>
<template name="info">
<h2>Learn Meteor!</h2>
<ul>
<li><a href="https://www.meteor.com/try" target="_blank">Do the Tutorial</a></li>
<li><a href="http://guide.meteor.com" target="_blank">Follow the Guide</a></li>
<li><a href="https://docs.meteor.com" target="_blank">Read the Docs</a></li>
<li><a href="https://forums.meteor.com" target="_blank">Discussions</a></li>
</ul>
</template>
返回此错误:
Error: No such template: hello
at lookup.js:189
at Blaze.View.<anonymous> (spacebars-runtime.js:32)
at view.js:199
at Function.Template._withTemplateInstanceFunc (template.js:465)
at view.js:197
at Object.Blaze._withCurrentView (view.js:538)
at viewAutorun (view.js:196)
at Tracker.Computation._compute (tracker.js:311)
at new Tracker.Computation (tracker.js:201)
at Object.Tracker.autorun (tracker.js:576)
为防止这种情况变得荒谬,如果需要,可以使用GitHub repo。
在tutorial中,模板在通话结束后出现。但由于某种原因,它不会在我的页面上。如果我将模板移到呼叫之上,它会起作用,但不会之后。我不确定我做错了什么。
这是请求的目录结构。我刚开始这个项目,你好是目前唯一的一页。
答案 0 :(得分:0)
您还应该在每个文件的顶部添加注释,仅指示工作目录。
我假设第一段代码是hello.js
的内容,第二段代码是main.html
的内容。我还假设您没有向我们展示hello.html
的内容。
如果所有这些都属实,我可以看到您将hello.html
导入hello.js
但是您在hello.html
内引用了main.html
。我假设你的错误是Meteor被误解为哪个是正确的参考,并且抓错了。
清洁代码往往会将Meteor模板分离到自己的目录和文件中。我从main.html中删除了它们。
更新:
我认为您的问题出在您的main.js中,或者更确切地说是您的路由文件。
对于初学者来说,在代码中间导入是不好的JS实践。好的做法是:
1)导入所有绝对路径 2)添加间距 3)导入所有相对路径 4)之后不要导入
好好看看已添加到项目中的@ BlazeLayout.render
,但尚未使用。试图肆无忌惮地导入JS文件永远不会起作用。您需要将参数传递给render方法,其中包括您希望呈现的模板。