待办事项列表 - ejs 错误无法识别我的数组

Todo list - ejs error won't recognize my array

提问人:Nina 提问时间:11/13/2023 更新时间:11/13/2023 访问量:28

问:

我正在尝试制作一个简单的待办事项列表,在键入时添加任务。但是由于某种原因,我一直收到一个错误,即我的“数组”未定义。所以我添加了一个 If 语句,其中添加了“locals.array”,但现在它不会添加我的列表项。

这是我的JS文件

import express from "express"
import bodyParser from "body-parser"

const app = express();
const port = 3000;

app.use(express.static('public'));
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));

app.get('/', (req, res) => {
    res.render('index');
});

var listItems = [];

app.post('/submit', function (req, res) {
    var newItem = req.body.newItems;
    listItems.push(newItem);

    res.redirect("/");
 });

 app.get("/", (req, res) => {    
    res.render("index", { myListItems: listItems, complete: complete}) 
    });


app.listen(port, () => {
    console.log(`Listening on port ${port}`);
});

和我的ejs文件的一部分

 <form action="/submit" method="POST">
               
    <input type="text" id="input" name="newItems" placeholder="New item" required>
    <button class="btn"> + </button>
         
    <h2>List</h2>

    <% if(locals.myListItems) { for (var i = 0; i > myListItems.length; i++) { %>
       <li><input type="checkbox" name="check" value="<%  myListItems[i] %>" /> <%=                   myListItems[i] %>
       </li>
    <% } %>
    <% } %>
                
  </form>

尝试添加if语句。不确定这是否是方法。仍然不会添加列表项。

JavaScript 数组表示 EJS body-parser

评论

0赞 derpirscher 11/13/2023
您是否尝试过设置断点?尝试一下,并检查该行是否正在执行。当然不是,因为同一路由有两个处理程序。当 express 按照它们定义的顺序选择处理程序时,第一个处理程序将被执行。而且这不会将任何数据传递给渲染引擎,因此在渲染过程中当然会未定义......res.render("index", { ...})app.get("/", ...)locals.myListItems
0赞 derpirscher 11/13/2023
此外,即使定义了,也不会执行循环体,因为循环的条件是错误的。 用 初始化,因此永远不可能为 true,因此不会执行循环的主体。locals.myListItemsfor (var i = 0; i > myListItems.length; i++)i0i > myListItems.length
0赞 Nina 11/14/2023
非常感谢!问题出在app.get上。循环只是一个错别字:') 我对 JS 很陌生,所以还在弄清楚东西。

答: 暂无答案