1

在我的 Jade 模板中使用本地变量时,我遇到了范围界定问题。我的代码是...

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);
});

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

谢谢,

FBZ

4

1 回答 1

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”。总之,整理好了。

于 2011-10-29T05:10:46.563 回答