【问题标题】:Sending Jade text data from Node/Express is rendering as open/close HTML tags从 Node/Express 发送 Jade 文本数据呈现为打开/关闭 HTML 标记
【发布时间】:2016-05-04 20:10:23
【问题描述】:

使用fs 我正在打开一个带有单行文本的简单文本文件。返回的data 的console.log 看起来是正确的,但是当通过res.render 将其传递到Jade 模板时,视图在文本区域中将其显示为打开和关闭标签(因此它出现了两次)。它只是简单的一行文本。

路由器:

router.get('/userlogin', auth, function(req, res, next) {

  function getData() {
    fs.readFile('./views/news.txt', 'utf8', function(error, data) {

      if (error) {
        console.log("Error: " + error);
      }

      else {
        console.log("Found file! Contents: " + data);
        res.render('components/editor', { title: 'Simple News Editor', news: data });
      }
    });
  }

getData();

});

然后是当前玉模板:

extends ../layout

block content

  div(class="editor-header")
    h1 Simple News Editor

  div(class="editor-content")
    label(for="news-textarea")
      textarea(id="news-textarea")
        #{news}

数据很好地传递到模板中,问题是它使用来自fs 调用的data 渲染一个textarea,在textarea 内部看起来像这样:

<This is a test></This is a test>

我不确定这个打开/关闭标签发生在哪里,我已经尝试在路由器函数和玉变量本身的数据上调用.toString()

我一定遗漏了一些简单的东西,但我似乎无法找到正确的搜索词来回答为什么会发生这种情况。

【问题讨论】:

    标签: node.js express pug fs


    【解决方案1】:

    原来在插值发生之前需要一个管道| 字符。就像您将文本硬编码到 textarea 中一样。

    所以:

    ...
    label(for="news-textarea")
      textarea(id="news-textarea")
        | #{news}
    

    解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 2021-09-09
      相关资源
      最近更新 更多