node.js - node+express+ejs中传参问题,在传参一直提示参数未定义
本文介绍了node.js - node+express+ejs中传参问题,在传参一直提示参数未定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
大概描述一下结构:
index.ejs:显示数据
list.ejs:后台获取到的数据列表模板
admin.js:数据渲染文件,用来获取后台数据的
三者之间的联系,想通过admin.js获取到数据库中的所有文章,通过locals.list传递到list.ejs中,然后把list.ejs渲染到index.ejs局部。
index.ejs
以下是通过include引入获取后台数据列表
在网上查到ejs 2.0+可以通过<%- inclund("article/list",{list:locals.list})传参,可是在list.ejs里并没接收到参数。控制台依然报错
list.ejs
admin.js
下面是错误提示
解决方案
经过不懈的努力,目前问题已经解决,问题主要出现在数据逻辑上,因为我是需要在admin/index中显示从后台获取的数据列表,以下是核心代码:
//后台首页(获取admin)
router.get("/admin",function (req, res, next) {
var page = 1;//条数
var limit = 3;
page = req.query.page == undefined ? page : req.query.page;
res.locals.page = page;
console.log("page:"+page)
//便利文章条数
Article.count({},function (err, count) {
if (err) return next(err);
res.locals.count = count;
console.log("count:" + count);
//遍历所有文章
Article.find({}, null, {
sort: {"_id": -1},
skip: (page - 1) * limit,
limit: limit
}, function (err, list) {
if (err) return next(err);
// var arr = Object.values(list);
console.log("list:" + list)
res.locals.list = list;
// console.log(res);
res.render("admin/index");
})
})
});
至于ejs之间的传参,代码如下:
<%- include("article/list",{
count : locals.count,
page : locals.page,
list : locals.list
})%>
其实之前传参已经是对的,只不过我后台数据没有获取到locals.list的值,所以在控制台一直提示Can not read property "forEach" of undefined,为此提醒广大初学者,慎入、水深、坑多。。。
这篇关于node.js - node+express+ejs中传参问题,在传参一直提示参数未定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文