【问题标题】:EJS variable definition issueEJS变量定义问题
【发布时间】:2016-12-01 09:57:18
【问题描述】:

尝试使用一点节点,但我无法让我的 EJS 模板呈现一些非常基本的数据。我有两个控制器 - 一个用于基本家庭/关于/联系人,另一个用于帖子。当我到达 /posts 时,会呈现正确的页面,但没有该数据,并且出现一个错误,提示“未定义帖子”。我不明白为什么会这样。干杯。

    var express = require('express');
var router = express.Router();

var posts = [{
  id: 0,
  title: "This is an example post.",
  author: "Tony",
  content: "This is some content for a post"
}];

router.get('/', function(req, res) {
  res.render("posts/index");
});

router.get('/new', function(req, res) {
  res.send("NEW");
});

router.get('/:id', function(req, res) {
  res.send("SHOW");
});

router.post('/', function(req, res) {
  res.send("CREATE");
});

router.get('/:id/edit', function(req, res) {
  res.send("EDIT");
});

router.put('/:id', function(req, res) {
  res.send("UPDATE");
});

router.delete('/:id', function(req, res) {
  res.send("DELETE");
});


module.exports = router;

还有html:

<!DOCTYPE html>
<html>
<head>
  <title>Posts</title>
</head>
<body>
<h1>hello</h1>
<nav>
  <ul>
    <li><a href="/posts">Posts</a></li>
    <li><a href="/about">About</a></li>
    <li><a href="/contact">Contact</a></li>
  </ul>
</nav>
<%= posts %>

<% for(var i=0; i < posts.length; i++) { %>
  <%= posts[i].id %>
  <h2><%= posts[i].title %></h2>
  <h4><%= posts[i].author %></h4>
  <p><%= posts[i].content %></p>
<% } %>

<button><a href="/posts/new">New</a></button>

</body>
</html>

和 app.js

var express    = require("express");
var app        = express();
var bodyParser = require("body-parser");
var port       = process.env.PORT || 3000;
var router = require("./config/routes");
var posts = require("./config/posts");

// Set the view directory to /views
app.set("views", __dirname + "/views");

// Let's use the Express templating language
app.set("view engine", "ejs");

// Setup public folder to serve static files
app.use(express.static(__dirname + "/public"));

// Setup app to parse req.body
app.use(bodyParser.urlencoded({
  extended: true
}));

app.use('/', router);
app.use('/posts', posts);

app.listen(port);

【问题讨论】:

    标签: javascript node.js express ejs


    【解决方案1】:

    您需要确保在呈现页面时将 posts 变量传递给页面,以便将该变量传递给 EJS 模板:

    var posts = [{
      id: 0,
      title: "This is an example post.",
      author: "Tony",
      content: "This is some content for a post"
    }];
    
    router.get('/', function(req, res) {
      res.render("posts/index", {
        posts: posts
      });
    });
    
    // ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 2017-09-22
      • 2019-09-21
      • 1970-01-01
      • 2019-09-30
      • 2020-06-12
      相关资源
      最近更新 更多