我使用ejs中的for循环将文件(存储在app.js文件中)从数组打印到网站:
<% for(let i = 0;i<posts.length; i++){ %>
<li class="listtitle">
<%= posts[i].title %>
</li>
<% } %>
现在,我希望能够从阵列中删除特定对象,我将使用
array.splice(i,1)
问题是我不知道如何将特定循环项的“ i”变量从ejs文件导出到app.js
(使用节点表示)
答案 0 :(得分:0)
我认为您可以使用javascript请求将数据发送到后端
答案 1 :(得分:0)
这样的恒定数据存储在内存中。而是存储在前端内存中。
否则,您需要实现api路由,并发送http请求并在浏览器中刷新或更改dom来处理此问题。
答案 2 :(得分:0)
我假设在事件触发时,您想要删除其中一个帖子。您可以使用jQuery提供的post方法来做到这一点。 JavaScript文件如下:
let posts = document.querySelectorAll(".listtitle");
for(let i = 0; i < posts.length; i++) {
posts[i].addEventListener('event_name', function(){
$.post('/route_name', {index: i}, function(data){
//perform whatever changes you want to do in the front end
});
});
上面的代码在'event_name'的触发器上将POST请求发送到'/ route_name',在请求完成后,您可以返回一些数据,该数据作为参数传递给回调函数。 app.js文件应具有以下中间件:
app.post('route_name', function(req, res){
//req.body would contain the data sent through the request, in this case req.body.index
//access and make changes to the database
//After making changes you can return some data which will be passed to the callback
res.send(posts);
});
确保包括body-parser模块,否则您将无法访问req.body对象中的数据,并且可能会出现错误。
您还可以使用http请求对象执行ajax请求,但我通常更喜欢使用jQuery。
答案 3 :(得分:0)
好吧,以防万一其他人遇到相同的问题,我使用了如下形式的隐藏输入字段:
hello.rb
i是变量,您可以通过req.body.prodId在app.js中访问它