【发布时间】:2015-06-25 23:15:27
【问题描述】:
通过流星中的模板动态传递值失败,而静态传递值成功。我究竟做错了什么?设置如下
我在 Meteor 中设置了以下 2 个模板
<template name="search">
{{#each cards}}
{{>card}}
{{/each}}
<template name="card">
<div class="card">
{{docName}}
</div>
</template>
像这样向它传递值非常有效
if (Meteor.isClient) {
Template.search.helpers({
cards: [
{docName: "Dr. Maga" },
{docName: "Dr. Macha" },
]
});
}
但是,像这样动态传递相同的值会失败
Cards = new Mongo.Collection("cards");
if (Meteor.isClient) {
Template.search.helpers({
cards: function() {
return Cards.find({});
}
});
}
mongo 集合“卡片”中有数据。我在应用程序启动后使用
插入它db.Cards.insert({ docName: "Hello world!", createdAt: new Date() });
并使用以下命令进行验证
db.Cards.find()
返回
{ "_id" : ObjectId("558b0a1394990bf66c75775d"), "docName" : "Hello world!", "createdAt" : ISODate("2015-06-24T19:50:42.996Z") }
我做错了什么?
【问题讨论】:
-
您是否设置了 Meteor 用于将数据从服务器发送到客户端的整个 Pub/Sub 机制? docs.meteor.com/#/full/meteor_publish
-
我在服务器文件夹 Meteor.publish("Cards", function () { return Cards.find({}); }); 中有以下 js 文件设置;
-
您是否还订阅了“卡片”出版物?
-
我还使用客户端文件夹 Meteor.subscribe("cards"); 中的 js 文件中的以下代码订阅了这个我还尝试了“卡片”/“卡片”的变体。不工作
-
pub 和 sub 的名称需要匹配。因此,如果您要发布“卡片”,您应该订阅“卡片”。如果仍然无法正常工作,下一步应该是检查客户端控制台以查看 Cards.find().fetch() 是否显示任何内容。还要确认目录结构,以便您从服务器目录发布并从客户端目录订阅