【发布时间】:2021-06-10 11:20:06
【问题描述】:
我使用 Svelte 创建了电子表格,但它似乎无法正确更新单元格。
我在每个单元格中附加了“2”后缀,当我编辑内容时(比如将 jim 中的第一个字母固定为大写),它应该以两个“2”作为“Jim22”结束。但它最终只有一个“2”作为“Jim2”。
我还有 JSON 输出来检查 rows 的值,它发生了变化,因此组件已正确更新,但可编辑单元格没有更新为“Jim22”,它仍然是“Jim2”。
为什么,以及如何解决这个问题?
代码
<script>
let rows = [
["jim"],
["Kate"]
]
function update(i, j, event) {
rows[i][j] = event.target.innerText
}
</script>
<table>
{#each rows as row, i}
<tr>
{#each row as cell, j}
<td contenteditable="true" on:blur="{(event) => update(i, j, event)}">{cell}2</td>
{/each}
</tr>
{/each}
</table>
<pre>{JSON.stringify(rows, null, 2)}</pre>
【问题讨论】:
-
我不知道为什么,但我发现
<td>{@html cell}2</td>解决了这个问题。寻找解释。 -
我不知道为什么它也不起作用,但
<td>{cell + "2"}</td>也起作用。此外,有趣的是,当您最初加载 Playground 并检查<td>时,它会在新的一行显示"Jim"和"2"。
标签: svelte