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

上記のコードは問題なくレンダリングされますが、「データ」をグローバル変数にする必要があります。むしろ、関数呼び出しに「データ」を直接渡したいと思います。しかし、そうすると、ジェイドから「変数が定義されていません」というエラーが表示されます。「データ」が範囲外である理由を誰かに教えてもらえますか?

ありがとう、

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が任意の名前のグローバル変数を受け入れるのは奇妙に思えますが、ローカル変数は「ローカル」と呼ばれる必要があります。とにかく、ソートされました。

于 2011-10-29T05:10:46.563 に答える