【发布时间】:2020-11-02 13:26:40
【问题描述】:
我有一个我认为是一个非常小而简单的苗条网络应用程序,目前只是一个问卷调查。我正在尝试创建一种多选系统,您可以在其中单击一堆按钮并将它们标记为选中(几乎是一个 html 复选框,但有点离题)。
所以为了向用户显示一个选项被选中,如果它被选中,我想向按钮添加一个类。但是它没有被更新,我真的不知道为什么。
isSelected 函数每个选项只调用一次,并且在修改设置对象时从不调用,我想知道为什么会这样
<script>
let page = 0;
let setup = {
JLPT: {
question: "select JLPT levels",
options: [1, 2, 3, 4, 5, 6, 7, 8, 9],
selected: [],
onSelect: option => {
console.log(setup.JLPT.selected);
setup.JLPT.selected = setup.JLPT.selected.concat(option);
}
}
};
$: question = getQuestion(page);
function getQuestion(page) {
return setup[Object.keys(setup)[page || 0]];
}
function isSelected(option) {
return (question.selected || []).indexOf(option) > -1;
}
function onClick(option) {
getQuestion(page).onSelect(option);
}
</script>
<div class="wrapper">
<div class="question">{question.question}</div>
<div class="input">
{#each question.options as option}
<button
on:click={() => onClick(option)}
class={isSelected(option) ? 'selected' : ''}>
{option}
</button>
{/each}
</div>
</div>
【问题讨论】:
标签: svelte