2017-03-08 64 views
0

app.js使用JSON文件中的文章將allArticles初始化爲全局變量。爲什麼我的數據路由只能部分工作?

app.locals.allArticles = dataFile.articles; 

articles.js(路線)主罰應用程序數據並使其在articles.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引用allArticles如下

<% allArticles.forEach(function(item) { %> 
    <%= item.name %> 
<% }); %> 

問題:引用PageID或文章會引發參考錯誤,例如

allArticles is not defined 

奇怪的是,提及PAGETITLE經過..

回答

0

成功通過從JSON文件數據到觀點如下:

app.js製成的製品陣列提供給當地的航線有:

app.locals.allArticles = dataFile.articles; 

index.js(路線)參加了應用程序的數據,創建AR射線來保存數據,使用的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(視圖):

<% allArticles.forEach(function(item) { %> 
    <%= item.name %><br/> 
<% }); %> 
0

你傳遞一個名爲articles你的看法,而不是allArticles視圖變量。重命名一個或另一個,使它們匹配並且錯誤應該消失。

0

你傳入articles爲對象不是一個數組,物品陣列我認爲這是articleTitles,所以你可以在EJS代碼更改爲:

<% articles.articles.forEach(function(item) { %> 
    <%= item.name %> 
<% }); %> 
相關問題