【问题标题】:ejs forEach function not working for json data in nodeejs forEach 函数不适用于节点中的 json 数据
【发布时间】:2016-04-28 21:12:14
【问题描述】:

当我使用 nodejs 在 ejs 中迭代 json 文件时,forEach 不是一个函数,在迭代时会出现一些错误。下面是我在 .ejs 文件、json 和 nodeJS 中所做的三个部分

  1. 这是我的 JSON 数据

           <pre> 
            {
                "MenuName": "Main Menu Here",
                "widget": {
                    "window": {
                        "data": "Click Here",
                        "title": "Sample Konfabulator Widget",
                        "name": "main_window",
                        "width": 500,
                        "height": 500
                    },
                    "window": {
                        "data": "Click Here",
                        "src": "Images/Sun.png",
                        "name": "sun1",
                        "hOffset": 250,
                        "vOffset": 250,
                        "alignment": "center"
                    },
                    "window": {
                        "data": "Click Here",
                        "size": 36,
                        "style": "bold",
                        "name": "text1",
                        "hOffset": 250,
                        "vOffset": 100,
                        "alignment": "center",
                        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
                    }
                }
            }
            </pre>
    
  2. 这是我的 ejs

            <html>
            <head>
            <title><%= title %></title>
            </head>
            <body>
                <h1> My Name Is <%= title %></h1>
                <h1> My Name Is <%= printIt.MenuName %></h1>
                <ul>
                    <% printIt.widget.forEach(function(item){%> 
                        <li><%= item.window.data%></li>
                    <% }); %>
                </ul>
            </body> 
    
            </html>
            </pre>
    
  3. 在 NodeJS 中

    <pre>
        app.locals.printIt = require("./sample.json");
    </pre>
    
        I can able to print 
        My Name Is <%= title %> and My Name Is <%= printIt.MenuName %>
    
        What i missed here..?
    

【问题讨论】:

  • 我可以打印 和 但无法迭代窗口键。

标签: node.js express ejs


【解决方案1】:

首先,您的 JSON 数据将只保留小部件窗口的单个记录,并且是最后一个。因为窗口键会覆盖之前的保持值。

用这个更新你的脚本

<ul>
  <% for(var item in printIt.widget){%> 
    <li><%= printIt.widget[item].data%></li>
  <% } %>
</ul>

希望这将有助于解决您的问题!

【讨论】:

  • 我不应该更改 json 数据,我想要
  • 中的所有“数据”键值
  • @Naresh,用这个更新你的脚本然后看看结果
  • 即使我将 JSON 文件更改为单个记录,上述脚本仍然出现错误。我已经像这样对我的代码进行了更改,我得到了“数据”键的单一记录。但我想要所有的关键值
  • 代码改成这样
  • 如果我正在编写此代码
  • 我没有收到任何错误,我得到了最后一个 window.data 键值。但我想要每个窗口数据键值。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签