簡體   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