我创建了这两个本地集合(代码实际上是一个接一个地写成,如下所示):
ShoppingCartCollection = new Meteor.Collection(null);
CurrentPricesCollection = new Meteor.Collection(null);
在Template.myTemplate.rendered
内部我将一些初始信息添加到这些集合中(同样,代码是一个接一个):
ShoppingCartCollection.insert({"sqft" : "not yet entered"});
CurrentPricesCollection.insert({"hdrPhotos" : 100});
我在helpers.js
(一个接一个地定义)
Handlebars.registerHelper("shoppingCart", function() {
return ShoppingCartCollection.findOne();
});
Handlebars.registerHelper("currentPrice", function() {
return CurrentPricesCollection.findOne();
});
当我加载页面时,我立即在控制台中运行这些命令:
> ShoppingCartCollection.findOne();
Object {sqft: "not yet entered", _id: "xcNmqJvMqqD5j7wwn"}
> CurrentPricesCollection.findOne();
Object {hdrPhotos: 100, _id: "LP38E3MZgzuYjvSec"}
在我的模板中,我使用这些助手,但是......
{{currentPrice.hdrPhotos}} //displays nothing
{{shoppingCart.sqft}} //displays "not yet entered"
怎么......什么......?怎么会这样?是否有某些我可能会遗失的陷阱?某种我不知道的依赖或加载顺序?
答案 0 :(得分:1)
您发布的代码在这里工作正常。
建议将此代码与您正在执行的操作的具体详细信息进行比较。另外,看 对于其他问题,拼写错误等。
以下是我使用的确切测试程序:
从无到有,在linux控制台:
meteor create sodebug
请注意,这将为" hello world"生成文件。类型程序。
检查版本:
meteor --version
Release 0.8.1.1
编辑sodebug / sodebug.js:
if (Meteor.isClient) {
// code autogenerated by meteor create
Template.hello.greeting = function () {
return "Welcome to sodebug.";
};
Template.hello.events({
'click input': function () {
// template data, if any, is available in 'this'
if (typeof console !== 'undefined')
console.log("You pressed the button");
}
});
// add your code here
ShoppingCartCollection = new Meteor.Collection(null);
CurrentPricesCollection = new Meteor.Collection(null);
ShoppingCartCollection.insert({"sqft" : "not yet entered"});
CurrentPricesCollection.insert({"hdrPhotos" : 100});
Handlebars.registerHelper("shoppingCart", function() {
return ShoppingCartCollection.findOne();
});
Handlebars.registerHelper("currentPrice", function() {
return CurrentPricesCollection.findOne();
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}
修改sodebug.html:
<head>
<title>sodebug</title>
</head>
<body>
{{> hello}}
{{> T1 }}
{{> T2 }}
</body>
<template name="T1">
<p>
{{shoppingCart.sqft}}
</p>
</template>
<template name="T2">
<p>
{{currentPrice.hdrPhotos}}
</p>
</template>
<template name="hello">
<h1>Hello World!</h1>
{{greeting}}
<input type="button" value="Click" />
</template>
运行:meteor run
手动测试:
在localhost:3000
启动Chrome浏览器检查Web浏览器控制台中的集合数据。 PASS
在网络浏览器屏幕上查看模板数据。 PASS
重新排序sodebug.html
文件中的模板,检查网络浏览器屏幕。 PASS