我有一个简单的编辑表单模板。要编辑的文档的_id
来自会话变量(由mini-pages
从URL设置:http://example.com/items/4zt4z3t3t
)。在Template.editForm.created
函数中,我尝试使用ItemCollection.findOne({_id:_id})
从集合中获取相应的文档。在所有情况下都正确设置了_id
。
当我导航到http://example.com/4zt4z3t3t
并调试created
函数时,ItemCollection.findOne()
返回undefined,尽管集合中有项目。因此我永远无法通过_id找到我的项目。此外,当我将项目查找过程移动到路由阶段时,也没有查找结果。后来,集体按预期工作。
任何指针?
答案 0 :(得分:0)
Meteor使用Data on the wire原则。这意味着当您的HTML加载时,您的数据不会随之发送,至少最初是这样。
因此,您无法访问.created
函数中的数据,除非您希望在下载数据后加载该模板。这就是它最初返回undefined
的原因,但是如果你稍后再检查它。
您可以在数据完成时等待订阅回调,然后加载模板。
OR
在模板中使用反应性并将其加载为空,并在数据进入时自动填充数据(实际上最简单)。访问模板中的数据并使用把手帮助程序填写数据并使用.rendered
回调来进行任何更改。