繁体   English   中英

For循环在Javasctipt中不起作用,无法从Jade中的node.js获得声明的变量

[英]For loops not working in Javasctipt for a declared variable from node.js in Jade

我正在学习使用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;

这是我的玉档案:

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,但是这两种环境仍是彼此分开管理的,所有服务器端代码都在客户端代码开始之前运行完毕。

解决此问题的一种方法是使用JSON和JavaScript的共享语法,将整个lat输出到视图中的客户端变量,并在客户端上进行迭代。

script.
  $('button').click(function () {
    var lat = !{ JSON.stringify(lat) };

    for (var i = 0; i < 2; i++) {
      // ...
    }
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM