【问题标题】:Multiple items to render in EJS在 EJS 中渲染多个项目
【发布时间】:2021-02-26 16:48:59
【问题描述】:

我是编程新手。我被渲染 JavaScript 变量卡住了。

你能给我一个解决的建议吗?

.ejs 内部,我正在尝试迭代表

      <tr>
        <% bodies.forEach(function(body){ %>
          <% try (typeof body.rowNum !== 'undefined') { %>
            <th scope="row"><%= body.rowNum %></th>
            <% if(typeof body.tick !== 'undefined') { %>
              <td><%= body.tick %></td>
            <% } %>
            <% if(typeof body.exDiv !== 'undefined') { %>
              <td><%= body.exDiv %></td>
            <% } %>
            <% if(typeof body.divYield !== 'undefined') { %>
              <th><%= body.divYield %></th>
            <% } %>
            <% if(typeof body.qty !== 'undefined') { %>
              <th><%= body.qty %></th>
            <% } %>
            <% if(typeof body.total !== 'undefined') { %>
              <th><%= body.total %></th>
            <% } %>
          <% } %>
        <% }) %>
      </tr>

下面是.js文件:

app.post("/", function(req, res){
   var bodies = {rowNum: 1, tick: tick, exDiv: exDiv, divYield: dividend, qty: 50, total: total}
   res.render("list", {bodies:bodies});
});

我收到的错误消息

SyntaxError: Unexpected token '(' in C:\Users\yoonl\Desktop\DividendTracker\views\list.ejs 同时编译 ejs

如果上述错误没有帮助,您可能想尝试 EJS-Lint: https://github.com/RyanZim/EJS-Lint 或者,如果您打算创建一个异步函数,请将 async: true 作为选项传递。 在新函数 () 在 Template.compile (C:\Users\yoonl\Desktop\DividendTracker\node_modules\ejs\lib\ejs.js:661:12) 在 Object.compile (C:\Users\yoonl\Desktop\DividendTracker\node_modules\ejs\lib\ejs.js:396:16) 在 handleCache (C:\Users\yoonl\Desktop\DividendTracker\node_modules\ejs\lib\ejs.js:233:18) 在 tryHandleCache (C:\Users\yoonl\Desktop\DividendTracker\node_modules\ejs\lib\ejs.js:272:16) 在 View.exports.renderFile [作为引擎] (C:\Users\yoonl\Desktop\DividendTracker\node_modules\ejs\lib\ejs.js:489:10) 在 View.render (C:\Users\yoonl\Desktop\DividendTracker\node_modules\express\lib\view.js:135:8) 在 tryRender (C:\Users\yoonl\Desktop\DividendTracker\node_modules\express\lib\application.js:640:10) 在 Function.render (C:\Users\yoonl\Desktop\DividendTracker\node_modules\express\lib\application.js:592:3) 在 ServerResponse.render (C:\Users\yoonl\Desktop\DividendTracker\node_modules\express\lib\response.js:1012:7)

[问题]我不熟悉async,如果可以通过添加异步功能解决以下问题,您能否分享一个如何使用它的示例?

谢谢,

【问题讨论】:

    标签: node.js express ejs


    【解决方案1】:

    您需要解决一些问题..

    1.) 您希望模板中有一个array,因为您使用了bodies.forEach(...),但您传递了一个对象。解决这个问题:

    var bodies = [{rowNum: 1, tick: 123, exDiv: 123, divYield: 123, qty: 50, total: 123}];
    res.render("list", {bodies}); // use Object Property Value Shorthand instead of {bodies:bodies}
    

    2.) &lt;% try (typeof body.rowNum !== 'undefined') { %&gt; 这是不正确的语法,我想你想改用if

    <% if (typeof body.rowNum !== 'undefined') { %>
    

    在这种情况下,您的错误与 async 无关 - 它只是语法不正确和传递给模板的数据不正确

    【讨论】:

    • 是的!谢谢你的解释!我现在有了更好的理解!
    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 2018-11-05
    • 2018-12-26
    • 1970-01-01
    • 2018-11-22
    • 2012-05-08
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多