arrays - 无法将 EJS 变量插入 html scripttag 中的数组?

标签 arrays node.js mongodb variables ejs

我正在尝试构建一个包含一些测试坐标的数组,以便与 OpenLayers Overlays 一起使用。

这是代码:

var parada = [];

for(var i = 0; i < <%- coords.length%>; i++){ //First loop to fill the array

    var arr = [<%- coords[i].lon %>, <%- coords[i].lat %>]; //THIS IS THE ERROR LINE! ... says the console...
    parada.push(arr);

} 

var overlays = [];

for (i = 0; i < parada.lenght; i++) { //Second loop to build the overlays
    overlays.push(new ol.Overlay({
        position: ol.proj.fromLonLat([parada[i][0], parada[i][1]]), //With the data of the array above
        positioning: 'center-center',
        element: document.getElementById('parada' + i),
        stopEvent: false
    }));

}

for (i = 0; i<overlays.length; i++){ // Last loop to assign the overlays.
    map.addOverlay(overlays[i]);
}

重要提示:在我的 app.js 文件中,coords 被定义为对象数组(我在 mongodb 中找到 ({}))。

我真的被困在这里了,请帮忙! 谢谢你! :DDD

最佳答案

你的变量i存在于客户端JS中,而不是存在于服务器端JS中。

有多种方法可以解决此问题,其中之一是:

var parada = <%- JSON.stringify(coords.map(function(pair) {
    return [pair.lon, pair.lat];
})) %>;

我假设 lonlat 始终是数字,这样就不存在注入(inject)攻击的风险。

或者,您可以在调用模板之前进行转换,从而避免模板本身的复杂性。

顺便说一下,您的长度也有拼写错误。

关于arrays - 无法将 EJS 变量插入 html scripttag 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46830486/

相关文章:

javascript - 正则表达式匹配变量

java - 有人可以帮我在单击 JAVA Jbutton 时添加文本吗?

MongoDB:如何进行文本搜索并按日期排序

php - 如何在php中查询mongo?

python - 解释 numpy 中 dim、shape、rank、dimension 和 axis 之间的区别

python - 使用 'in' 匹配数组中 Python 对象的属性

javascript - 从 React 提供大型静态页面

c++ - 从 node.js native 代码调用回调

javascript - 正则表达式仅匹配后面没有多个空格的部分

java - 将 $stdDevSamp 或 $stdDevPop 与 Spring Mongo 一起使用