2011-10-28 75 views
1

我在使用Jade模板中的当地人时遇到问题。我的代码是...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

回答

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'。无论如何,排序。