簡體   English   中英

從ejs文件導出變量

[英]exporting variable from ejs file

我使用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中

(使用節點和快遞)

我認為您可以使用javascript使用請求將數據發送到后端

這樣的常量數據存儲在內存中。 而是存儲在前端內存中。

否則,您需要實現api路由,並發送http請求並在瀏覽器中刷新或更改dom來處理此問題。

我假設在事件觸發時您想要刪除其中一個帖子。 您可以使用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。

好的,以防萬一其他人遇到相同的問題,我使用了如下形式的隱藏輸入字段:

  <input id="prodId" name="prodId" type="hidden" value=<%= i %>>

我是變量,您可以通過req.body.prodId在app.js中訪問它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM