【发布时间】:2021-12-16 12:30:21
【问题描述】:
这个问题最好用一个实际的例子来说明。
<script>
let searchInput = '';
let values = ['a', 'b', 'c', 'd', 'e', 'f'];
$: filteredValues = searchInput ? values.filter(v => v.toLowerCase().includes(searchInput.toLowerCase())) : values;
let chosenValues = [];
</script>
<input type="search" placeholder="Search" bind:value={searchInput} />
{#each filteredValues as value (value)}
<div class="checkbox">
<input type="checkbox" bind:group={chosenValues} value={value} />
{value}
</div>
{/each}
{chosenValues}
也可在 REPL 上找到:https://svelte.dev/repl/5af87332d81e4d82835bcd0f47ff9d81?version=3.44.1。
问题发生如下:
- 您选择选项 a 和 b
- 你搜索 c
- 您选择选项 c
现在 selectedValues 只包含 c; a 和 b 不见了。我想我可以遍历所有values 并隐藏那些不属于hiddenValues 的部分,这样它们仍然是DOM 的一部分,但是为什么会发生这种情况,有没有更简单的方法来处理这个问题?
【问题讨论】: