Вы можете использовать on:change
прослушиватель событий для входов, а затем передать параметры обработчику, где вы можете назначить одинаковые значения для question.value и для внешней переменной.
Примерно так :
<script>
let atHome = null;
let questions = {
atHome: {
question: 'Are you stuck at home?',
value: null
}
}
let questionArray = []
$: {
questionArray = []
for (let key in questions) {
questionArray.push(questions[key])
}
console.log(questions.atHome.value);
}
function handleChange(event, question, atHome) {
question.value = event.target.value === "true"
atHome = question.value;
console.log(question);
console.log(atHome);
}
</script>
{#each questionArray as question}
<div class="VitWotc-question">
<ul>
<li>Script stuck at home => {atHome}</li>
<li>Iteration Bind stuckatHome => {question.value}</li>
</ul>
<p>{question.question} </p>
<label>
<input type="radio" name="q1" on:change={(e) => handleChange(e,question, atHome)} value={true} />
Yes
</label>
<label>
<input type="radio" name="q1" on:change={(e) => handleChange(e,question, atHome)} value={false} />
No
</label>
</div>
{/each}
Примечание. Я добавил тот же атрибут name
к элементам input
, чтобы сохранить их в качестве группы. Возможно, вам придется передать это через объект вопроса и связать его с вводом, чтобы вам не приходилось писать это вручную, как я ...
Здесь у вас есть ссылка REPL: https://svelte.dev/repl/a2dc24f98ac1429db6964737522816e5?version=3.20.1
Не забудьте проверить консоль браузера, чтобы убедиться, что она работает.