Bird
Raised Fist0
Vueframework~10 mins

v-model with checkboxes in Vue - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - v-model with checkboxes
User clicks checkbox
↓
Checkbox checked or unchecked?
↓
Add value
↓
Update bound array
↓
Re-render checkboxes with new state
When a user clicks a checkbox, Vue checks if it is checked or unchecked. It adds or removes the checkbox's value from the bound array, then updates the UI.
Execution Sample
Vue
<template>
  <input type="checkbox" v-model="selected" value="apple" /> Apple
  <input type="checkbox" v-model="selected" value="banana" /> Banana
  <p>Selected: {{ selected }}</p>
</template>

<script setup>
import { ref } from 'vue'
const selected = ref([])
</script>
This code binds two checkboxes to an array 'selected'. Checking a box adds its value to the array; unchecking removes it.
Execution Table
StepUser ActionCheckbox StateArray BeforeArray AfterUI Update
1Clicks 'Apple' checkboxChecked[]["apple"]Shows Selected: ["apple"]
2Clicks 'Banana' checkboxChecked["apple"]["apple", "banana"]Shows Selected: ["apple", "banana"]
3Clicks 'Apple' checkbox againUnchecked["apple", "banana"]["banana"]Shows Selected: ["banana"]
4Clicks 'Banana' checkbox againUnchecked["banana"][]Shows Selected: []
💡 User stops interacting; array reflects current checked boxes.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4
selected[]["apple"]["apple", "banana"]["banana"][]
Key Moments - 3 Insights
Why does the array 'selected' hold multiple values?
Because v-model on checkboxes binds to an array that collects all checked values. See execution_table rows 1 and 2 where values are added.
What happens when a checkbox is unchecked?
The value is removed from the array. Look at execution_table rows 3 and 4 where values are removed from 'selected'.
Can the array contain duplicate values?
No, Vue ensures each value appears only once in the array. The execution_table shows values added or removed, never duplicated.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'selected' after Step 2?
A["apple", "banana"]
B["banana"]
C["apple"]
D[]
💡 Hint
Check the 'Array After' column in row for Step 2.
At which step does the 'apple' value get removed from the array?
AStep 1
BStep 4
CStep 3
DStep 2
💡 Hint
Look for when 'apple' disappears from 'Array After' in execution_table.
If the user checks 'Banana' first, how would the array look after Step 1?
A["apple"]
B["banana"]
C[]
D["apple", "banana"]
💡 Hint
The array adds the value of the checked box; see variable_tracker for how values are added.
Concept Snapshot
v-model with checkboxes binds an array to multiple checkboxes.
Checking a box adds its value to the array.
Unchecking removes the value.
The array always reflects current checked boxes.
Use value attribute to specify each checkbox's value.
Full Transcript
This lesson shows how Vue's v-model works with checkboxes. When a user clicks a checkbox, Vue checks if it is checked or unchecked. If checked, Vue adds the checkbox's value to the bound array. If unchecked, Vue removes that value. The array always holds the current selected values. The UI updates to show the selected array. This is useful for multiple selections. The example uses two checkboxes for 'apple' and 'banana'. The variable 'selected' starts empty. Clicking 'apple' adds 'apple' to the array. Clicking 'banana' adds 'banana'. Unchecking removes values accordingly. This keeps the array in sync with the checkboxes.

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