引用错误:“标记未定义”
我已经操纵了这个应用程序中的代码,并把它放在views / layout.jade文件中的边栏中。 在侧边栏中,我剪切/粘贴了处理来自views / index.jade的标签的代码:
ul.tags each tag in tags a(href='/tag/' + tag._id.toHexString()) li.tag= tag.name
标签是从数据库中获取的,并且在侧栏中呈现出来,但是当我点击其中一个标签(应该会显示一个标签为标签的所有post的新页面)时,我会收到一条错误消息:
500 ReferenceError: ... layout.jade:10 8| p 9| ul.tags > 10| each tag in tags 11| a(href='/tag/' + tag._id.toHexString()) 12| li.tag= tag.name tags is not defined
这里是在文件“tagcontroller.js”中调用的函数(这是处理标签的逻辑):
app.get('/tag/:id', function(req, res){ model.Tag.findById(req.params.id, function (err, tag){ if (err) { console.log(err); // do something } var query = blogModel.BlogPost.find( { _id: { $in : tag.blogs } } ); query.where('date').lte(new Date()); query.exec(function (err, blogs) { if (err) { console.log(err); // do something } var query = model.Tag.find({}); query.exec(function (err, tags) { if (err) { console.log(err); // do something } res.render('tags/detail', { title: tag.name, blogs: blogs, tagList: tags, dateFormatter: dateFormatter }); }); }); }); });
如果我把代码放回views / index.jade,一切工作正常。 但我需要在layout.jade中能够在每个页面上显示它,而不仅仅是在Home(index.jade)上。
我真的很感激一些帮助!
现在,你有:
res.render('tags/detail', { title: tag.name, blogs: blogs, tagList: tags, dateFormatter: dateFormatter });
但是如果你正在做each tag in tags
的each tag in tags
,那么你应该有类似的东西
{ title: tag.name, blogs: blogs, tags: tags, dateFormatter: dateFormatter }