Установка флажка, отмеченного флажком Vue.js

Я играю в игры и играю с каждой знакомой мной комбинацией, но я не могу проверить свои флажки, как отмечено.

Пример:

<ul class="object administrator-checkbox-list">
    <li v-for="module in modules">
        <label v-bind:for="module.id">
            <input type="checkbox" v-model="form.modules" v-bind:value="module.id" v-bind:id="module.id">
            <span>@{{ module.name }}</span>
        </label>
    </li>
</ul>

Пример данных модулей:

[
    {
        "id": 1,
        "name": "Business",
        "checked": true
    },
    {
        "id": 2,
        "name": "Business 2",
        "checked": false
    },
]

Что я могу сделать, чтобы изначально установить проверенные состояния флажков?

Ответ 1

Чтобы установить значение флажка, вам нужно привязать v-модель к значению. Флажок будет проверен, если значение правдиво. В этом случае вы выполняете итерацию modules, и каждый module имеет свойство checked.

Следующий код свяжет флажок с этим свойством:

<input type="checkbox" v-model="module.checked" v-bind:id="module.id">

Обратите внимание, что я удалил v-bind:value="module.id". Вы не должны использовать v-model и v-bind:value для одного и того же элемента. Из vue docs:

<input v-model="something">

- это просто синтаксический сахар для:

<input v-bind:value="something" v-on:input="something = $event.target.value">

Итак, используя v-model и v-bind:value, вы фактически получаете v-bind:value дважды, что может привести к поведению undefined.

Ответ 2

Предположим, вы хотите передать опору дочернему компоненту и что prop - это логическое значение, которое определит, установлен ли флажок или нет, тогда вы должны передать логическое значение в v-bind:checked="booleanValue" или более короткий путь :checked="booleanValue", например:

<input
    id="checkbox"
    type="checkbox"
    :value="checkboxVal"
    :checked="booleanValue"
    v-on:input="checkboxVal = $event.target.value"
/>

Это должно сработать, и флажок отобразит флажок с его текущим логическим состоянием (если true, если не отмечен).

Ответ 3

У меня были требования к смайлеру, но я не хотел использовать v-model, чтобы иметь состояние в родительском компоненте. Тогда я заставлю это работать.

<input
  type="checkbox"
  :checked="checked"
  @input="checked = $event.target.checked"
/>

Чтобы передать значение от родителя, я внес в него небольшое изменение, и оно работает.

<input
  type="checkbox"
  :checked="aPropFrom"
  @input="$emit('update:aPropFrom', $event.target.checked)"
/>