0

我有一个模板,它是一个简单的编辑表单。_id要编辑的文档的 来自会话变量(由URL mini-pages:设置http://example.com/items/4zt4z3t3t)。在Template.editForm.created函数中,我尝试使用ItemCollection.findOne({_id:_id}). 在所有情况下_id都正确设置。

当我导航到http://example.com/4zt4z3t3t并调试该created函数ItemCollection.findOne()时,尽管集合中有项目,但返回未定义。因此,我永远无法通过 _id 找到我的项目。此外,当我将项目查找过程移动到路由阶段时,查找也没有结果。稍后,colleciton 按预期工作。

任何指针?

4

1 回答 1

0

Meteor 使用数据线原理。这意味着当您的 HTML 已加载时,您的数据不会随它一起发送,至少最初是这样。

因此,您无法访问.created函数中的数据,除非您希望在下载数据后加载该模板。这就是它undefined最初返回但如果您稍后检查它的原因。

您可以在数据完成时等待订阅的回调,然后加载模板。

或者

在您的模板中使用反应性并让它加载为空,并在数据进入时自动用数据填充它(真的是最简单的)。在模板中访问您的数据并使用车把助手来填写数据并在.rendered之后使用回调进行任何更改。

于 2013-06-28T11:42:44.830 回答