在vue中,直接渲染带有\n的语句,渲染失败,不回换行

解决方法

一、CSS解决

设置white-space: pre-wrap;

<div style="white-space: pre-wrap;">{{含有/n的语句}}</div>

white-space属性指定元素内的空白怎样处理。

描述
normal 默认。空白会被浏览器忽略。
pre 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。
nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。
pre-wrap 保留空白符序列,但是正常地进行换行。
pre-line 合并空白符序列,但是保留换行符。
inherit 规定应该从父元素继承 white-space 属性的值。

二、通过v-html解决

  • v-html 指令的作用:设置元素的innerHTML
  • 内容中有html结构会被解析为标签
  • v-text指令无论内容是什么,只会解析为文本
  • 解析文本使用v-text,需要解析html结构使用v-html 
// html部分
<div class="logs" v-html="runLog"></div>

// js部分
this.runLog = this.runLog.replace(/\n/g, '<br />')

三、<pre>标签

pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。

<pre>{{ 含有/n的语句 }}</pre>

 

 
posted on 2022-07-19 11:38  童话Bluebells  阅读(4516)  评论(0编辑  收藏  举报