富文本编辑器里怎么动态给表格加行啊?
我在用 Vue 写一个富文本编辑器,里面插入了表格,但用户点击“添加行”按钮时,表格没反应。我试过直接 push 数据,但视图不更新,是不是哪里写错了?
这是我的模板代码:
<table>
<tr v-for="(row, rowIndex) in tableData" :key="rowIndex">
<td v-for="(cell, colIndex) in row" :key="colIndex">{{ cell }}</td>
</tr>
</table>
<button @click="addRow">添加一行</button>
methods 里 addRow 就是 this.tableData.push([”, ”, ”]),但页面不动,求解!
this.$set或者Vue.set来确保视图能够更新。不过在这个场景下,直接用push应该是可以的,但要确保tableData是响应式的。可以尝试在
data函数里定义tableData,然后在addRow方法中使用this.tableData.push(['', '', ''])。如果还是不行,检查一下tableData是否被正确初始化并且是响应式的。你也可以尝试使用concat方法,它返回一个新的数组,这样 Vue 能够检测到数据变化:或者直接用 Vue 的
$set方法来确保每一行都是响应式的:如果性能上没问题的话,这两种方法都可以解决你的问题。
另外提醒一下,在富文本编辑器里处理表格时,记得要转义用户输入的内容,防止XSS攻击。特别是如果允许用户粘贴HTML内容的话,一定要用DOMPurify之类的库过滤一下。
PS:有时候我也会被这种响应式问题搞疯,特别是加班到半夜的时候...