javascript - 在 vue 中用换行符拆分字符串的问题

标签 javascript vue.js

所以我试图设置一个过滤器来用 <br> 替换连字符把它吐到新的一行上。 我创建了一个这样的过滤器:

filters: {

  splitRows: function (value) {
    if (!value) return ''
    value = value.toString()
    return value.replace('-', '</br>')
  }
}

然后

  <span class="Name">
      {{ product.title | splitRows }}
  </span>

但是,这只会打印 </br>而不是打破界限。我是 vue 新手,所以不确定我做错了什么?

最佳答案

问题不在于您的过滤器。这就是你如何实现它。您需要使用 v-html 指令,如 Vue Documentation 中所示因为你想写 html 而不是文本:

<span class="Name" v-html="$options.filters.splitRows(product.title)"/>

请注意,这具有潜在的危险,因为它允许 XSS 攻击。如果您写入的数据并非来自您本人(例如来自第三方 API 的数据或来自文本字段的数据),请采取安全措施去除恶意代码。

如您所见,没有更多的管道。问题是使用管道语法的过滤器在文本渲染以外的任何地方都不被支持。您仍然可以通过 $options 对象访问过滤器来使用它。

解决它的更优雅的方法是使用计算属性:

export default {
  computed: {
    productTitle() {
      return this.$options.filters.splitRows(this.product.title)
    }
  }
}

关于javascript - 在 vue 中用换行符拆分字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60721212/

相关文章:

javascript - vue-test-utils: could not overwrite property $route, 这通常是由于插件将属性添加为只读值引起的

typescript - TypeScript 中的无渲染 Vue 组件

javascript - 当 v-model 值更改时,自定义 Vue 选择组件不更新所选选项

javascript - Vue 在 Axios API 调用中将 bool 从 true 更改为 false

vue.js - Vue.2.x 中的 vue 模型

javascript - 为什么在另一个函数内部调用的函数不能访问外部函数的范围?

javascript - Greasemonkey 脚本自动选择并单击值/选择器中包含非英文字符的特定按钮?

javascript - 如何识别网页是在 iframe 中加载还是直接加载到浏览器窗口中?

javascript - 如何填充选择框,选择名称和ID时包括 ":"

javascript - this.state 与 useState 的 setTimeout