Bird
Raised Fist0
Vueframework~5 mins

Custom v-model on components in Vue - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of using a custom v-model on Vue components?
A custom v-model allows a component to define its own prop and event names for two-way binding, making it easier to integrate with parent components while keeping clear and flexible data flow.
Click to reveal answer
beginner
Which prop and event names does Vue use by default for v-model on components?
By default, Vue uses the prop named modelValue and the event named update:modelValue for v-model bindings on components.
Click to reveal answer
intermediate
How do you define a custom v-model with a different prop and event name in a Vue component?
You use the model option in the component to specify the prop and event names, for example: model: { prop: 'checked', event: 'change' }.
Click to reveal answer
intermediate
In Vue 3, how can you customize the v-model binding on a component without using the model option?
In Vue 3, you can define multiple v-model bindings by using v-model:customName syntax and then define props and emit events like customName and update:customName respectively.
Click to reveal answer
beginner
Why is it important to emit the correct event name when implementing a custom v-model?
Emitting the correct event name (like update:modelValue or update:customProp) ensures Vue detects the change and updates the bound value in the parent component, enabling two-way binding to work properly.
Click to reveal answer
What is the default prop name used by Vue's v-model on components?
AinputValue
Bvalue
Cchecked
DmodelValue
Which event should a component emit to update the default v-model binding?
Ainput
Bchange
Cupdate:modelValue
Dupdate:value
How do you bind a custom v-model named 'checked' in Vue 3?
Av-model:checked
Bv-bind:checked
Cv-model
Dv-on:checked
Which of these is NOT a correct way to customize v-model in Vue 3?
AUsing the <code>model</code> option to rename prop and event
BChanging the <code>v-model</code> directive syntax to <code>v-bind:modelValue</code>
CEmitting <code>update:customName</code> event
DUsing <code>v-model:customName</code> with matching prop and event
Why might you want to create a custom v-model instead of using the default?
ATo use a more meaningful prop name for your component
BTo avoid two-way binding
CTo disable event emission
DTo make the component static
Explain how to create a custom v-model in Vue 3 and why it is useful.
Think about how Vue links props and events for two-way binding.
You got /4 concepts.
    Describe the role of the event emitted by a component when using v-model and what happens if it is missing or incorrect.
    Consider how Vue listens for changes from child components.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the default prop name used in a Vue component to work with v-model?
      easy
      A. inputValue
      B. value
      C. vModel
      D. modelValue

      Solution

      1. Step 1: Understand Vue's default v-model prop

        Vue uses modelValue as the default prop name to bind data from parent to child.
      2. Step 2: Recall the default event name

        The event emitted to update the parent is update:modelValue, matching the prop name.
      3. Final Answer:

        modelValue -> Option D
      4. Quick Check:

        Default prop for v-model = modelValue [OK]
      Hint: Default v-model prop is always 'modelValue' [OK]
      Common Mistakes:
      • Using 'value' as default prop
      • Confusing event name with prop name
      • Assuming 'vModel' is default prop
      2. Which of the following is the correct syntax to use a custom v-model named checked on a component?
      easy
      A. <MyCheckbox v-model:checked="isChecked" />
      B. <MyCheckbox v-model.checked="isChecked" />
      C. <MyCheckbox v-model_checked="isChecked" />
      D. <MyCheckbox v-modelChecked="isChecked" />

      Solution

      1. Step 1: Recall custom v-model syntax

        Vue uses v-model:customName syntax to bind custom model names.
      2. Step 2: Match syntax with options

        Only <MyCheckbox v-model:checked="isChecked" /> uses the correct colon syntax for custom v-model binding.
      3. Final Answer:

        <MyCheckbox v-model:checked="isChecked" /> -> Option A
      4. Quick Check:

        Custom v-model uses colon syntax [OK]
      Hint: Use colon for custom v-model names: v-model:customName [OK]
      Common Mistakes:
      • Using dot instead of colon
      • Using underscore instead of colon
      • Using camelCase without colon
      3. Given this child component code:
      props: ['modelValue'],
      methods: {
        updateValue(val) {
          this.$emit('update:modelValue', val)
        }
      }

      And parent usage:
      <ChildComponent v-model="parentData" />

      What happens when updateValue('new') is called inside the child?
      medium
      A. The child's modelValue prop changes to 'new'.
      B. Nothing happens because event name is wrong.
      C. The parent's parentData updates to 'new'.
      D. An error occurs because updateValue is not defined.

      Solution

      1. Step 1: Understand event emission in child

        The child emits update:modelValue with the new value, which Vue listens to for v-model updates.
      2. Step 2: Effect on parent data

        The parent bound to v-model receives the event and updates parentData to 'new'.
      3. Final Answer:

        The parent's parentData updates to 'new'. -> Option C
      4. Quick Check:

        Child emits update:modelValue -> parent updates [OK]
      Hint: Child emits update:modelValue event to update parent data [OK]
      Common Mistakes:
      • Thinking prop changes inside child
      • Confusing event name with prop name
      • Assuming no update without v-model modifier
      4. Identify the error in this child component code for custom v-model named checked:
      props: ['checked'],
      methods: {
        updateChecked(val) {
          this.$emit('update:checked', val)
        }
      }

      Parent uses:
      <MyCheckbox v-model:checked="isChecked" />
      medium
      A. Event name should be update:modelValue for custom v-model.
      B. Prop name and event name are correct for custom v-model checked.
      C. Prop name should be modelValue instead of checked.
      D. The method should emit checked event, not update:checked.

      Solution

      1. Step 1: Check prop and event names for custom v-model

        For v-model:checked, the prop must be checked and event update:checked.
      2. Step 2: Verify code matches custom v-model pattern

        The code uses props: ['checked'] and emits update:checked, which is correct.
      3. Final Answer:

        Prop name and event name are correct for custom v-model checked. -> Option B
      4. Quick Check:

        Custom v-model uses matching prop and update:event [OK]
      Hint: Custom v-model uses prop and event names matching the model name [OK]
      Common Mistakes:
      • Using default modelValue prop for custom v-model
      • Emitting wrong event name
      • Confusing event and prop names
      5. You want to create a component ToggleSwitch that uses a custom v-model named active. Which of these code snippets correctly implements the child component's props and emits to support this?
      hard
      A.
      props: ['active'],
      methods: {
        toggle() {
          this.$emit('update:active', !this.active)
        }
      }
      B.
      props: ['modelValue'],
      methods: {
        toggle() {
          this.$emit('update:modelValue', !this.modelValue)
        }
      }
      C.
      props: ['active'],
      methods: {
        toggle() {
          this.$emit('update:modelValue', !this.active)
        }
      }
      D.
      props: ['modelValue'],
      methods: {
        toggle() {
          this.$emit('update:active', !this.modelValue)
        }
      }

      Solution

      1. Step 1: Match prop and event names to custom v-model name

        For v-model:active, the prop must be active and event update:active.
      2. Step 2: Check each option for correct prop and event

        props: ['active'],
        methods: {
          toggle() {
            this.$emit('update:active', !this.active)
          }
        }
        uses props: ['active'] and emits update:active, matching the custom v-model name.
      3. Final Answer:

        props: ['active'], methods: { toggle() { this.$emit('update:active', !this.active) } } -> Option A
      4. Quick Check:

        Custom v-model prop and event must match model name [OK]
      Hint: Custom v-model prop and event must match the model name exactly [OK]
      Common Mistakes:
      • Mixing default modelValue with custom names
      • Emitting wrong event name
      • Using wrong prop name for custom v-model
      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