【发布时间】:2019-01-06 21:41:49
【问题描述】:
我是 VueJS 的新手,我正在开发一种标签编辑器。它应该是非常基本的。
我的想法是我有一个标签列表和一些文档文本。目标是用一个按钮(标签)替换选定的文本,单击该按钮会显示该标签的信息。
到目前为止,我已经能够通过使用 window.getSelection() 并重新分配其 innerHTML 的方法用按钮替换所选文本。
我在使用这个解决方案时有两个问题:
1) 我只能用原始 HTML 替换 innerHTML,因此它不适用于我想使用的 Element-UI 组件。
2) 此外,如果我将 innerHTML 替换为一个按钮,它就可以正常工作。问题是我无法将任何功能链接到按钮。因此,如果我用var newHTML = "<button @click="someFunction">"+text+"</button>" 替换我选择的innerHTML,则该功能不会在点击时触发。
我希望我已经足够清楚地解释了我的问题。
【问题讨论】:
-
停止尝试操作 dom 而是使用 VDOM。然后你可以使用
v-if语句或conditional rendering -
感谢您的回复!我想我会再研究一点关于 VDOM 操作的知识,因为直到现在我一直无法找到一种方法来通过仅操作 VDOM 来操作任意类型的选择(一个字符、一个单词、多个单词) .
标签: vue.js element-ui