首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的数据路由只能部分工作?

为什么我的数据路由只能部分工作?
EN

Stack Overflow用户
提问于 2017-03-08 03:48:48
回答 3查看 37关注 0票数 0

app.js使用JSON文件中的文章将allArticles初始化为全局变量。

代码语言:javascript
复制
app.locals.allArticles = dataFile.articles;

articles.js (路由)获取应用程序数据并使其在articles.ejs页面中可用

代码语言:javascript
复制
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引用allArticles如下所示

代码语言:javascript
复制
<% allArticles.forEach(function(item) { %>
  <%= item.name %>
<% }); %>

问题:对PageID的引用或文章引发引用错误。

代码语言:javascript
复制
allArticles is not defined

奇怪的是,对pageTitle的引用是通过..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-08 15:43:17

成功地将数据从JSON文件传递到视图中,如下所示:

app.js使文章数组可供本地路由使用:

代码语言:javascript
复制
app.locals.allArticles = dataFile.articles;

index.js (路由)接收应用程序数据,创建保存数据的数组,使用forEach函数传递数据,呈现在视图中:

代码语言:javascript
复制
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 (视图):

代码语言:javascript
复制
<% allArticles.forEach(function(item) { %>
  <%= item.name %><br/>
<% }); %>
票数 0
EN

Stack Overflow用户

发布于 2017-03-08 04:03:14

您将一个名为articles的视图变量传递给视图,而不是allArticles。重命名其中一个或另一个,以便它们匹配,错误就会消失。

票数 0
EN

Stack Overflow用户

发布于 2017-03-08 04:28:52

您将articles作为对象传递,而不是数组,我认为它是articleTitles,因此可以将EJS代码更改为:

代码语言:javascript
复制
<% articles.articles.forEach(function(item) { %>
  <%= item.name %>
<% }); %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42662648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档