for循环和forEach循环在ejs中不起作用

时间:2019-09-06 17:47:23

标签: javascript node.js express ejs

我正在开发一个待办事项应用程序,但我很难使POST请求生效。我已经尝试过使用for循环和for Each循环。不起作用。

<% todos.forEach(item => { %>
    <li><%= items.item %></li>
<% });%>

还有这个

<% for(let i=0; i < todos.length; i++) { %>
    <li><%= todos[i].item %></li> 
<% } %>

我的app.js:

const express= require('express');
const todoController = require ('./controllers/todoController');

const app = express();
app.set('view engine', 'ejs');
app.use(express.static('./public'));
todoController(app);

app.listen(3000);

我的控制器:

let data = [
    { item: 'wake up and pray' },
    { item: 'go to the gym' }, 
    { item: 'fire my laptop and...CODE!!' }
];

module.exports = function(app) {
    app.get('/todo' ,function(req, res) {
        res.render('todo', {todos:data});
    });

    app.post('/todo',function(req, res) {
        data.push(req.body);
        res.render('todo', {todos:data});
    });

    app.delete('/todo' ,function(req, res) {});
};

这是错误消息:

ReferenceError: C:\Users\HP LAPTOP\Desktop\toDoApp\views\todo.ejs:20
   18|         <ul>
   19|                 <% todos.forEach(item => { %>
>> 20|                     <li><%= items.item %></li>
   21|                     <% });%> 
   22|      </ul>
   23| </body>

2 个答案:

答案 0 :(得分:0)

<% todos.forEach(item => { %>
    <li><%= items.item %></li>
<% });%>

您的JS代码基本上是todos.forEach(item => some_formatting(item))

在lambda内,您可以访问item,而不是items.item

答案 1 :(得分:0)

您已循环使用“ todos.forEach(项目 => {});”但使用了“ 项目。项目”。

已编辑 正确的代码是

<% todos.forEach(function (item) { %>
   <li><%= item.item %></li>
<% }) %>