簡體   English   中英

將對象數組從EJS模板傳遞到Javascript函數?

[英]Passing array of objects from EJS template to Javascript function?

我有一個基本的Node.js應用程序,當用戶點擊某條路線時,將從該路線中的數據庫中檢索到許多記錄,並將它們作為數組傳遞給我的EJS模板。

這很好用,但是,在EJS模板上,我有一個按鈕,該按鈕調用Javascript函數以隨機播放此數組。 如何將該數組作為參數從EJS模板發送到Javascript函數? 通常的<%%>在這種情況下似乎不起作用。

我將數組傳遞給模板的代碼如下:

router.get("/home", middleware.isLoggedIn, function(req, res) {
    Bean.find({ "userid": req.user._id }, function(err, beans) {
        if (err) {
            console.log(err);
        } else {            
            res.render("home", { path: req.path, beans: beans }); 
        }
    });
});

在我的模板中,我可以訪問bean變量fine並進行遍歷,但是,我不能將其作為如下參數傳遞:

<a href="javascript:void(0);" class="btn btn-lg btn-yellow" role="button" onclick="match_engine(<% beans %>);">Match</a>  

上面的代碼在編輯器中給我一個“ Expression Expected”錯誤,並且bean數組在我的Javascript代碼中未定義。 我究竟做錯了什么?

此外,我可以從Javascript文件返回此數組並將其用作EJS中的新變量嗎?

提前致謝!

編輯:

在我的EJS模板上,我具有上面的按鈕和一個表格:

<table class="table table-striped"> 
            <thead> 
                <tr> 
                    <th>Full Name</th> 
                    <th>Email</th> 
                    <th>Position</th> 
                </tr> 
            </thead> 
            <tbody>
                <% beans.forEach(function(bean) { %>
                    <tr> 
                        <td><%= bean.fname + " " + bean.lname %></td> 
                        <td><%= bean.username %></td> 
                        <td><%= bean.position %></td>
                    </tr> 
                <% }); %>
            </tbody> 
        </table>

我的目標是在加載頁面時填充此表(此方法有效),然后當用戶單擊按鈕時,對象的bean數組將重新排列並重新顯示在表中。

<% %>代表將不會在HTML代碼中顯示的javascript輸入,例如<% for (var i = 0; i < arr.length; i++){ %><%= %>當您希望以HTML形式顯示時使用。 在您的情況下,它將是<%= beans %>而不是<% beans %>

希望能幫助到你!

除非您的按鈕調用一個函數來重新加載頁面,或者像表單提交按鈕那樣使用所需的數據重新加載或重定向頁面,否則您無法通過node.js實現您的目標。

暫無
暫無

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

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