for 循环和 forEach 循环在 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> 
<% } %>

我的应用.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:UsersHP LAPTOPDesktoptoDoAppviewstodo.ejs:20
18|         <ul>
19|                 <% todos.forEach(item => { %>
>> 20|                     <li><%= items.item %></li>
21|                     <% });%> 
22|      </ul>
23| </body>

你已经循环了"todos.forEach(item => {}(;",但使用了">items.item."。

已编辑正确的代码是

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

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

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

最新更新