玉当地人的范围

时间:2011-10-28 12:55:32

标签: javascript node.js pug

在我的Jade模板中使用locals时,我遇到了一个范围问题。我的代码是......

function(req, res) {
    BlogPostModel.find({}, function(e, data) {
        if (e) throw e;

        posts = data;

        var path = __dirname + "/view/admin/blog.jade",
            template = fs.readFileSync(path, "utf8"),
            options = { filename: path },
            fn = jade.compile(template, options),
            html = fn(posts);

        res.end(html);
});

上面的代码渲染得很好,但是我必须让'data'成为一个全局变量。我宁愿将'data'直接传递给我的函数调用。但是当我这样做时,我从Jade得到一个'变量未定义'错误。谁能告诉我为什么'数据'超出范围?

谢谢,

FBZ

1 个答案:

答案 0 :(得分:2)

所以这根本不是一个范围问题。我不得不把我的论点称为“当地人”。像这样......

BlogPostModel.find({}, function(e, locals) {
    if (e) throw e;
    var path = __dirname + "/view/admin/blog.jade",
        template = fs.readFileSync(path, "utf8"),
        options = { filename: path },
        fn = jade.compile(template, options),
        html = fn(locals);

    res.end(html);
});

奇怪的是,Jade接受任何名称的全局变量,但是局部变量必须被称为“locals”。无论如何,排序。