【问题标题】:Trying render html entities in my express ejs Application尝试在我的 express ejs 应用程序中呈现 html 实体
【发布时间】:2017-10-01 17:20:07
【问题描述】:

这是我要渲染的页面

<% include ../partials/boilerplate %>



    <div class="triviaContainer">
        <h1>GAME TIME!!! </h1>
        <% var i =0; data.forEach(question =>{ i+=1 %>

    <div class="questionRow">
        <div> <%= question.question  %></div>
    </div>
    <div class="questionRow1">
        <div  clicked="" id="correctanswer<%=i %>" class="correctAnswer"  > A: <%= question.correct_answer %></div>

        <div clicked="" id="incorrectanswer<%=i %>" class="incorrectanswer<%=i %>" >B: <%= question.incorrect_answers[0].incorrect_answer %></div>
    </div>
    <div class="questionRow2">
        <div clicked="" id="secondincorrectanswer<%=i %>"  >C: <%= question.incorrect_answers[1].incorrect_answer %></div>
        <div clicked="" id="lastanswer<%=i %>" >D: <%= question.incorrect_answers[2].incorrect_answer %></div>
    </div>


     <%   }) %>
<form class="gameForm" method='POST' action='/trivia/score'>

    <input type="hidden" name="points" value="" id="points"/> 
    <input type="hidden" name="gameid" value="<%= data[0].game_id %>"/>
    <input type="hidden" name="questions" value="<%= data[0].number_of_questions %>"/> 
    <input type="submit" value="GET RESULTS">
</form>
       </div>


<script type="text/javascript" src="javascript/triviaGameScript.js"></script>

<% include ../partials/end %>

我在 foreach 函数的 question.question 部分呈现问题。如果你看这个屏幕截图,最后一个问题有一个引用 html 实体。我有几个关于这些实体的问题,想找一个 npm 包来解码它们。

这是我需要 html-entities npm 包的控制器

const triviaModel = require('../models/trivia');
const authHelpers = require('../services/auth/auth-helpers')
const Entities = require('html-entities').XmlEntities;
const entities = new Entities();
const triviaapiController = {};

triviaapiController.index = (req, res) => {
console.log(req.body.game_id);
triviaModel.GetGame(req.body.game_id)
    .then(data =>{
          console.log(data);

          res.render('trivia/trivia-index', {
            data: data,
      });
    })
    .catch(err => {
      console.log(err);
      res.status(500).json({ err });
    });
}

琐事索引承诺中的数据部分是存储问题和答案的地方。

这里是这个特定包的文档。 https://www.npmjs.com/package/html-entities我不确定如何使用它。我应该将它应用到 ejs 文件中,还是应用到传入的数据对象中。任何帮助将不胜感激!

【问题讨论】:

    标签: javascript node.js express ejs


    【解决方案1】:

    你的代码使用这样的包:

    triviaapiController.index = (req, res) => {
      console.log(req.body.game_id)
      triviaModel.GetGame(req.body.game_id)
        .then(data => {
          console.log(data)
          var decodedData = []
          for (var q of data) {
            var decodedQ = {
              question: entities.decode(q.question),
              correct_answer: q.correct_answer,
              incorrect_answers: q.incorrect_answers
            }
            decodedData.push(decodedQ)
          }
    
          res.render('trivia/trivia-index', {
            data: decodedData
          })
        })
        .catch(err => {
          console.log(err)
          res.status(500).json({ err})
        })
    }
    

    【讨论】:

    • 是的,这行得通。感谢您的帮助!我需要跳出框框思考!编程游戏还是新手。
    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2011-11-16
    • 2015-07-10
    • 2018-03-23
    • 2016-11-16
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多