【问题标题】:Reference error: "Tags is not defined"参考错误:“标签未定义”
【发布时间】:2012-04-17 13:08:00
【问题描述】:

我已经操作了this application 中的代码,并在views/layout.jade 文件中放入了一个侧边栏。在边栏中,我已经剪切/粘贴了处理来自 views/index.jade 的标签的代码:

    ul.tags
        each tag in tags
            a(href='/tag/' + tag._id.toHexString())
                li.tag= tag.name

标签按应有的方式从数据库中提取,并在侧边栏中呈现,但是当我单击其中一个时(应显示一个新页面,其中所有帖子都带有该标签),我收到一条错误消息:

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) 上。

非常感谢您的帮助!

【问题讨论】:

    标签: javascript node.js express pug


    【解决方案1】:

    现在,你有:

    res.render('tags/detail', { title: tag.name, blogs: blogs, tagList: tags, dateFormatter: dateFormatter });
    

    但是如果你正在做一个each tag in tags,那么你应该有类似的东西

    { title: tag.name, blogs: blogs, tags: tags, dateFormatter: dateFormatter }
    

    【讨论】:

    • 非常感谢,感谢您,终于成功了。您将尽快获得奖励(17 小时)。 :)
    • 不客气 ;) !但是您应该为此使用帮助程序,以免查询每个页面中的标签。你可以在这里找到一些信息:dailyjs.com/2011/01/03/node-tutorial-8,这样你就可以在特定的助手中检索标签,然后在你的布局中调用这个助手。
    • 谢谢你,我马上就要实现了。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2021-07-15
    • 2015-09-29
    相关资源
    最近更新 更多