Open kevinPFish opened 6 years ago
我测试了一下,应该是ok的,不确定有没有更好的实现方式哈 稍后我在在线文档里补充这个案例。
<button @click="insertAt">@</button>
<at :at="at" :members="members">
<textarea ref="ed"></textarea>
</at>
insertAt () {
let { ed } = this.$refs
ed.focus() // 如果之前没有焦点,则会定位到文本最前而不是最后,可能可以改进
document.execCommand('insertText', 0, ' ' + this.at) // 一般应该要加空格
let e = document.createEvent('HTMLEvents')
e.initEvent('input', true, true)
ed.dispatchEvent(e)
}
事件的触发,我一直都是参照vue的测试代码: https://github.com/vuejs/vue/blob/dev/test/helpers/trigger-event.js
@fritx 感谢博主这么快回复,我去看看。
额外添加一个按钮,点击后textarea中添加@,并触发下拉框如何实现。使用v-model会失去焦点,并不能触发下拉框