Nodejs render里面给view(ejs)传递参数,怎么接收不了呢
Nodejs render里面给view(ejs)传递参数,怎么接收不了呢
var friends = [“Tom”,“Joe”];
//friends=friends.toString();
res.render(‘index’, {
title : ‘欢迎来到我的主页’,
friends : friends
});
//view模板用的是ejs,在index里面<%=friends%>获取不了friends哎~ //字符串接收是好的,怎么获取friends呢~ ~
6 回复
当然可以。让我们来详细分析一下这个问题,并提供一个示例代码来解决它。
问题描述
你尝试在 Node.js 中通过 res.render
方法向 EJS 模板传递一个数组参数 friends
,但在 EJS 模板中无法正确显示该数组的值。
分析
- 数据类型:你提到将数组转换为字符串后可以正常工作。这说明 EJS 模板在处理数组时遇到了一些问题。
- EJS 渲染:EJS 模板引擎默认会将变量作为字符串处理,对于数组或对象需要使用特定的语法来遍历或访问它们。
解决方案
示例代码
首先确保你的 Node.js 后端代码正确传递了参数:
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
var friends = ["Tom", "Joe"];
res.render('index', {
title: '欢迎来到我的主页',
friends: friends
});
});
app.listen(3000, function() {
console.log('App is running on port 3000');
});
然后,在 EJS 模板文件(例如 views/index.ejs
)中,你可以使用以下代码来遍历并显示数组中的每个元素:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<h1><%= title %></h1>
<ul>
<% friends.forEach(function(friend) { %>
<li><%= friend %></li>
<% }); %>
</ul>
</body>
</html>
解释
-
Node.js 部分:
app.set('view engine', 'ejs')
设置了视图引擎为 EJS。res.render('index', { ... })
将title
和friends
传递给 EJS 模板。
-
EJS 模板部分:
<%= title %>
直接输出字符串。<% friends.forEach(function(friend) { %> ... <% }); %>
使用 EJS 的循环语法来遍历数组friends
并逐个输出每个朋友的名字。
通过这种方式,EJS 模板能够正确地解析和显示数组中的每个元素。希望这能解决你的问题!
试试friends.length
不可以传数组的么。。。
对不住啊,这个不知道怎么回事,上午还接收不了= =,现在又可以了,数组,json都可以了,谢谢了!!
在Node.js中使用EJS渲染视图时,如果你在res.render
中传递了一个数组作为参数,并且在EJS模板中无法正确显示,可能是因为EJS默认情况下不支持直接遍历数组。你需要使用EJS的循环语法来遍历数组。
示例代码
假设你的路由处理函数如下:
const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
var friends = ["Tom", "Joe"];
res.render('index', {
title: '欢迎来到我的主页',
friends: friends
});
});
app.listen(3000);
EJS模板(views/index.ejs)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<h1><%= title %></h1>
<ul>
<% friends.forEach(function(friend) { %>
<li><%= friend %></li>
<% }); %>
</ul>
</body>
</html>
解释
-
Node.js部分:
- 在
res.render
中传递了一个对象,其中包含title
和friends
两个属性。 friends
是一个数组。
- 在
-
EJS模板部分:
- 使用
<% ... %>
标签包裹EJS脚本。 - 使用
friends.forEach
方法遍历数组,并在每个元素上输出一个列表项。
- 使用
这样,你可以通过EJS的循环语法正确地遍历数组并显示数组中的元素。