我正在学习使用node.js和JADE,并且在使for循环在jade文件中的javascript中工作时遇到问题。我正在尝试用简单的代码来学习它。我正在将一个数组从数据库传递到 jade 文件。当我直接调用数组的特定元素 (var x = !{lat[2]};alert(x) 时它可以工作,但当我将它放入 for 循环中时它不会工作。这是我的 app.js代码:
app.get('/test', function(req, res){
getlat(function(err, lat){
if(err){
return res.send(500);
}console.log(lat);
res.render('test', {lat:lat});
});
这是从数据库中检索纬度的位置:
var mongoose = require ('mongoose');
function getlat(callback){
var lat = new Array();
mongoose.model('stories').find({},function(err, companies) {
if(err){
return callback(err, lat);
}
for (var i = 0; i < companies.length; i++) {
lat[i] = companies[i].Lat;
}
return callback(null, lat);
});
}
module.exports = getlat;
这是我的 Jade 文件:
body
button.btn.btn-info Click Here!
script.
$('button').click( function() {
for (var i = 0; i < 2; i++) {
var x = !{lat[i]};
alert(x);
});
});
如果有人告诉我我在哪里犯了错误,我将非常感激。 谢谢
最佳答案
问题是 lat
仅存在于服务器端,而 i
仅存在于客户端。
尽管两者都使用 JavaScript,但这两个环境仍然彼此分开管理,所有服务器端代码在客户端代码开始之前运行完成。
解决此问题的一个选项是将整个 lat
输出到 View 中的客户端变量,使用 JSON 和 JavaScript 的共享语法,并在客户端进行迭代。
script.
$('button').click(function () {
var lat = !{ JSON.stringify(lat) };
for (var i = 0; i < 2; i++) {
// ...
}
});
关于javascript - For 循环在 Jade 中的 Node.js 中声明的变量在 Javascript 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24186737/