[英]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.