我的路线设置如下:
Meteor.Router.add({
'/:menuSlug': function(menuSlug) {
Template.menu.items = function() { return Items.find({menuId: Menus.findOne({slug: menuSlug})._id}); }
return 'menu';
}
});
但是,当我浏览/ my-test-slug时,我收到此错误
Uncaught TypeError: Cannot read property '_id' of undefined
我认为这与https://stackoverflow.com/a/14107148/979315有关,但由于我没有使用Meteor.user()反应集合,因此我不确定在适当提取数据后如何重新呈现此页面。有什么想法吗?
答案 0 :(得分:0)
最好从路由器代码中分离模板助手,并使用Session哈希来存储消息:
Meteor.Router.add({
'/:menuSlug': function(menuSlug) {
Session.set("menuslug", menuSlug);
return 'menu';
}
});
Template.menu.items = function() {
var item = Menus.findOne({slug: menuSlug});
if(item) return Items.find({menuId: item._id});
});
另一个问题可能是数据稍后发送。所以有一段时间可能没有任何数据(特别是如果你直接将URI加载到页面)。因此,您需要考虑本地集合中可能没有数据的情况。