app.js将allasticles初始化为全局变量,其中来自JSON文件的文章。
app.locals.allArticles = dataFile.articles;
articles.js(路由)获取应用程序数据并在文章中可用。ejs页面
router.get('/articles', function(req, res) {
var data = req.app.get('appData');
var articleTitles = data.articles;
res.render('articles', {
pageTitle: 'Articles',
pageID: 'articles',
articles: articleTitles
});
});
header.ejs参考allartsices如下
<% allArticles.forEach(function(item) { %>
<%= item.name %>
<% }); %>
问题:引用pageID或文章引发参考错误,即
allArticles is not defined
奇怪的是,对Pagetitle的引用通过..
您将一个名为 articles
的视图变量传递给您的视图,而不是 allArticles
。重命名一个或另一个,以使其匹配并将错误消失。
您将articles
作为对象而不是数组,我认为是articleTitles
的文章数组,因此您可以将EJS代码更改为:
<% articles.articles.forEach(function(item) { %>
<%= item.name %>
<% }); %>
成功地将数据从JSON文件传递到视图中:
app.js使文章数组可用于本地路线:
app.locals.allArticles = dataFile.articles;
index.js(oute)获取应用程序数据,创建的数组以保存数据,使用foreach函数传递的数据,并在视图中渲染:
router.get('/', function(req, res) {
var data = req.app.get('appData');
var allArticles = [];
data.articles.forEach(function(item) {
allArticles = item.title;
});
res.render('index', {
pageTitle: 'Home',
pageID: 'home',
articles: allArticles
});
});
index.ejs(view):
<% allArticles.forEach(function(item) { %>
<%= item.name %><br/>
<% }); %>