【发布时间】:2019-07-05 05:46:36
【问题描述】:
我正在处理的组件在完成后应该是一个 textarea 或 contenteditable div,其中文本后跟一个井号标签会突出显示/或类似芯片。
目前我正在使用 contenteditable div,周围是另一个建议关键字的组件。在那个组件中有一个 v-model
我的目标是将文本放在# 之后,在一个跨度中。
<template>
<at :ats=['#'] v-model="vmodel">
<div contenteditable @keypress.enter="highlight"></div>
</at>
<template>
这不是我想要的,因为它在 div 的开头添加了文本。所以例如当我写的时候: “你好#Something” 我明白了: “#Something Hello”
<script>
import At from 'vue-at'
export default {
components: { At },
data() {
return { vmodel: '', };
},
methods: {
highlight(){
this.vmodel = this.vmodel.replace(/\B#([^ ]+)/g,"<span class='highlight-Text'>$&</span>")
}
}
</script>
如何操作 vmodel,例如在键入时向文本添加一个跨度,它不会输出乱码?
【问题讨论】:
-
at组件对其 v-model 有什么作用? -
它只是将它传递给 div 组件。写documents.activeElement.innerHtml = documents.activeElement.innerHtml.replace(/\B#([^ ]+)/g,"$&") 做同样的工作,但我想避免使用 Dom.- 这是同样的问题
标签: javascript html vue.js vue-component vuetify.js