bugfix> javascript > 投稿

index.htmlファイルのハンドルバーを作成したため、ユーザーがアクセスしたときにhttp:// localhost:3000 / [ルート]これは、index.htmlの動的バージョンを表示します。しかし、ページがロードされると、含まれているパーシャルを除くすべてがロードされますか?

これが、ページハンドルバーのパーシャル(newView.handlebar)を置く部分です。

.
.
<main class="twit-container">
    {{#each twitData}}    //will iterate/insert data for the amount of objects in the array being passed in server.js
        {{> newTwit}}  //the name of my partial template
    {{/each}}
</main>
.
.etc...

以下は私のserver.jsコードです(問題があると思います):

var path = require('path');
var express = require('express');
var exphbs = require('express-handlebars');
var fs = require('fs');
var app = express();
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
var port = process.env.PORT || 3000;
var rawData = fs.readFileSync('./twitData.json');
var twitData = JSON.parse(rawData); //get the tweet data (text/authors)

app.get('/', function (req, res) {
  res.status(200).render('newView', {data: twitData});
});
app.use(express.static('public'));
app.get('*', function (req, res) {
  res.status(404).sendFile(path.join(__dirname, 'public', '404.html'));
});
app.listen(port, function () {
  console.log("== Server is listening on port", port);
});

回答 1 件
  • twitData を繰り返し処理しています  ただし、ビューに送信することはありません。

    <main class="twit-container">
        {{#each twitData}}    //will iterate/insert data for the amount of objects in the array being passed in server.js
            {{> newTwit}}  //the name of my partial template
        {{/each}}
    </main>
    
    

    次のように送信する必要があります。

    res.status(200).render('newView', { twitData });
    
    

    それ以外の場合は、次を使用する必要があります: {{#each data}}

あなたの答え