Bird
Raised Fist0
Vueframework~5 mins

v-model with checkboxes in Vue

Choose your learning style10 modes available
Introduction

v-model with checkboxes helps you easily link checkbox inputs to your data. It keeps your data and checkboxes in sync without extra code.

When you want to select multiple options from a list using checkboxes.
When you need to update your data automatically as users check or uncheck boxes.
When building forms that require multiple selections, like choosing hobbies or skills.
When you want simple two-way binding between checkboxes and an array or boolean value.
When you want to reduce manual event handling for checkbox inputs.
Syntax
Vue
<input type="checkbox" v-model="dataProperty" :value="optionValue" />

If v-model is bound to a boolean, the checkbox is checked when true and unchecked when false.

If v-model is bound to an array, the checkbox adds or removes its value from the array automatically.

Examples
Checkbox linked to a boolean. Checked if isChecked is true.
Vue
<input type="checkbox" v-model="isChecked" />
Checkboxes linked to an array selectedFruits. Checking adds the fruit to the array.
Vue
<input type="checkbox" v-model="selectedFruits" value="apple" />
<input type="checkbox" v-model="selectedFruits" value="banana" />
Sample Program

This Vue component shows three checkboxes for fruits. The selectedFruits array updates automatically as you check or uncheck boxes. The selected fruits are displayed below.

Vue
<template>
  <div>
    <h2>Select your favorite fruits:</h2>
    <label>
      <input type="checkbox" v-model="selectedFruits" value="Apple" /> Apple
    </label>
    <label>
      <input type="checkbox" v-model="selectedFruits" value="Banana" /> Banana
    </label>
    <label>
      <input type="checkbox" v-model="selectedFruits" value="Cherry" /> Cherry
    </label>
    <p>You selected: {{ selectedFruits.length ? selectedFruits.join(', ') : 'None' }}</p>
  </div>
</template>

<script setup>
import { ref } from 'vue'
const selectedFruits = ref([])
</script>
OutputSuccess
Important Notes

When using v-model with checkboxes and arrays, the checkbox's value attribute is important to identify what gets added or removed.

For a single checkbox bound to a boolean, no value attribute is needed.

Remember to initialize your data property properly: boolean for single checkbox, array for multiple checkboxes.

Summary

v-model with checkboxes links checkbox inputs to your data easily.

Use a boolean for single checkboxes, and an array for multiple checkboxes.

Checkboxes update your data automatically as users interact with them.

Practice

(1/5)
1. What type of data should you use with v-model when binding to multiple checkboxes in Vue?
easy
A. A string representing the last selected checkbox
B. A boolean to represent true or false
C. An array to hold the selected values
D. A number counting how many checkboxes are checked

Solution

  1. Step 1: Understand checkbox binding

    When multiple checkboxes are bound with v-model, Vue expects an array to store all selected values.
  2. Step 2: Compare data types for checkboxes

    A boolean is used for single checkboxes, but for multiple checkboxes, an array collects all checked values.
  3. Final Answer:

    An array to hold the selected values -> Option C
  4. Quick Check:

    Multiple checkboxes = array [OK]
Hint: Multiple checkboxes always bind to an array [OK]
Common Mistakes:
  • Using a boolean for multiple checkboxes
  • Binding to a string instead of an array
  • Expecting a number to track checked boxes
2. Which of the following is the correct syntax to bind a single checkbox with v-model in Vue?
easy
A. <input type='checkbox' v-model='checked' />
B. <input type='checkbox' :value='checked' />
C. <input type='checkbox' v-bind='checked' />
D. <input type='checkbox' v-model:value='checked' />

Solution

  1. Step 1: Identify correct binding directive

    The v-model directive binds the checkbox's checked state to a data property.
  2. Step 2: Check syntax correctness

    <input type='checkbox' v-model='checked' /> uses v-model='checked' which is the correct and simplest syntax for binding a single checkbox.
  3. Final Answer:

    <input type='checkbox' v-model='checked' /> -> Option A
  4. Quick Check:

    Single checkbox uses v-model='property' [OK]
Hint: Use v-model directly on checkbox for single binding [OK]
Common Mistakes:
  • Using :value instead of v-model
  • Using v-bind without specifying property
  • Using v-model:value which is invalid
3. Given this Vue template code:
<template>
  <input type='checkbox' v-model='selected' value='apple' />
  <input type='checkbox' v-model='selected' value='banana' />
  <input type='checkbox' v-model='selected' value='cherry' />
  <p>Selected: {{ selected }}</p>
</template>

<script setup>
import { ref } from 'vue'
const selected = ref([])
</script>

What will be displayed after the user checks the boxes for "apple" and "cherry"?
medium
A. Selected: 'apple,cherry'
B. Selected: ['apple', 'cherry']
C. Selected: ['apple']
D. Selected: true

Solution

  1. Step 1: Understand v-model with multiple checkboxes

    When multiple checkboxes share the same v-model bound to an array, Vue adds the checkbox's value to the array when checked.
  2. Step 2: Check which boxes are selected

    User checked "apple" and "cherry", so the array contains ['apple', 'cherry'].
  3. Final Answer:

    Selected: ['apple', 'cherry'] -> Option B
  4. Quick Check:

    Checked boxes values collected in array [OK]
Hint: Multiple checkboxes with same v-model store values in array [OK]
Common Mistakes:
  • Expecting a string instead of an array
  • Thinking only last checked value is stored
  • Confusing boolean with array for multiple checkboxes
4. What is wrong with this Vue checkbox binding?
<input type='checkbox' v-model='checked' value='yes' />

<script setup>
import { ref } from 'vue'
const checked = ref(false)
</script>

Why does checking the box not add 'yes' to checked?
medium
A. Because checked should be a string, not boolean
B. Because value attribute is missing
C. Because v-model cannot be used on checkboxes
D. Because checked is a boolean, not an array, so value is ignored

Solution

  1. Step 1: Identify data type for v-model

    The variable checked is a boolean, so Vue treats the checkbox as a single toggle (true/false).
  2. Step 2: Understand effect of value attribute

    When v-model is boolean, the value attribute is ignored; it only matters when binding to an array.
  3. Final Answer:

    Because checked is a boolean, not an array, so value is ignored -> Option D
  4. Quick Check:

    Boolean v-model ignores value attribute [OK]
Hint: Boolean v-model ignores value; use array for multiple values [OK]
Common Mistakes:
  • Thinking value attribute always affects checkbox state
  • Believing v-model can't be used on checkboxes
  • Using string instead of boolean or array incorrectly
5. You want to create a group of checkboxes for selecting favorite fruits using v-model. The data property is favorites initialized as an empty array. Which code snippet correctly updates favorites when users check or uncheck fruits?
hard
A. <input type='checkbox' v-model='favorites' value='apple' /> <input type='checkbox' v-model='favorites' value='banana' /> <input type='checkbox' v-model='favorites' value='cherry' />
B. <input type='checkbox' v-model='favorites' :value='true' /> <input type='checkbox' v-model='favorites' :value='false' />
C. <input type='checkbox' v-model='favorites.apple' /> <input type='checkbox' v-model='favorites.banana' />
D. <input type='checkbox' v-model='favorites' value='true' /> <input type='checkbox' v-model='favorites' value='false' />

Solution

  1. Step 1: Understand array binding for multiple checkboxes

    Binding multiple checkboxes to the same array with v-model and distinct value attributes collects checked values in the array.
  2. Step 2: Evaluate each option's correctness

    <input type='checkbox' v-model='favorites' value='apple' /> <input type='checkbox' v-model='favorites' value='banana' /> <input type='checkbox' v-model='favorites' value='cherry' /> correctly uses v-model='favorites' with unique string values for each checkbox, so checked fruits are added or removed from the array.
  3. Final Answer:

    <input type='checkbox' v-model='favorites' value='apple' /> <input type='checkbox' v-model='favorites' value='banana' /> <input type='checkbox' v-model='favorites' value='cherry' /> -> Option A
  4. Quick Check:

    Multiple checkboxes + array + unique values = correct binding [OK]
Hint: Use array with unique values for multiple checkboxes [OK]
Common Mistakes:
  • Using boolean values instead of unique strings
  • Binding to object properties instead of array
  • Using same value for all checkboxes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard