2017-03-08 10 views
0

app.jsは、allArticlesをJSONファイルの記事でグローバル変数として初期化します。私のデータルートは部分的にしか動作しません。

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 

奇妙なことは、ページタイトルへの参照は、あなたがallArticles、あなたのビューにarticlesという名前のビュー変数を渡しているではない...

答えて

0

に成功しましたビューにJSONファイルからデータを渡します次のように:

app.jsは、ローカルルートに利用できる記事の配列を作った:

app.locals.allArticles = dataFile.articles; 

index.js(ルート)は、アプリのデータに取った、ARを作成

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/> 
<% }); %> 
データを保持する光線は、ビューでレンダリング、のforeach関数を使用してデータを通過します
0

を通過するということです。どちらか一方の名前を変更して一致させると、エラーは消えてしまいます。

0

あなたが目的ではない配列、記事の配列私はそれがarticleTitlesだと思うようarticlesを渡している、あなたにEJSコードを変更することができるように:

<% articles.articles.forEach(function(item) { %> 
    <%= item.name %> 
<% }); %> 
関連する問題