Shorthand syntax makes Vue code shorter and easier to read by replacing long attribute names with symbols.
Shorthand syntax (: and @) in Vue
Introduction
Syntax
Vue
<element :attribute="value" @event="handler" />
: is shorthand for v-bind: to bind data or props.
@ is shorthand for v-on: to listen to events.
Examples
src attribute to the imageUrl data property.Vue
<img :src="imageUrl" alt="Photo" />
click event and calls submitForm method.Vue
<button @click="submitForm">Send</button>Vue
<input :value="username" @input="updateUsername" />
Sample Program
This Vue component uses : to bind the input's value to the name variable. It uses @ to listen for input events and update the name. The paragraph shows the live greeting.
Vue
<template>
<div>
<input :value="name" @input="updateName" aria-label="Name input" />
<p>Hello, {{ name }}!</p>
</div>
</template>
<script setup>
import { ref } from 'vue'
const name = ref('')
function updateName(event) {
name.value = event.target.value
}
</script>Important Notes
Using shorthand makes your templates cleaner and easier to maintain.
Remember that : and @ only work inside Vue templates.
Always use aria-label or other accessibility attributes for better user experience.
Summary
: is short for v-bind: to bind data.
@ is short for v-on: to listen to events.
Shorthand syntax helps write cleaner and simpler Vue templates.
Practice
1. What does the shorthand
: represent in Vue templates?easy
Solution
Step 1: Understand Vue directive shorthand
In Vue,v-bind:is used to bind data to HTML attributes.Step 2: Identify shorthand for
The shorthand forv-bind:v-bind:is:, which simplifies template syntax.Final Answer:
It is short forv-bind:to bind data to attributes. -> Option AQuick Check:
:=v-bind:[OK]
Hint: Remember ':' means binding data to attributes [OK]
Common Mistakes:
- Confusing ':' with event listening shorthand '@'
- Thinking ':' defines components
- Assuming ':' is for comments
2. Which of the following is the correct shorthand syntax to listen for a click event on a button in Vue?
easy
Solution
Step 1: Identify event listening shorthand
Vue usesv-on:to listen to events, and its shorthand is@.Step 2: Check correct usage for click event
The correct shorthand for listening to a click event is@click="handleClick".Final Answer:
<button @click="handleClick">Click</button> -> Option CQuick Check:
@=v-on:[OK]
Hint: Use '@' for events like click, not ':' [OK]
Common Mistakes:
- Using ':' instead of '@' for events
- Mixing 'v-bind' with event handlers
- Writing invalid directive names like 'v-on:bind'
3. What will be the rendered output of this Vue template snippet?
Assuming
<template> <input :value="username" @input="updateName" /> </template>
Assuming
username is 'Alice' and updateName updates username on input.medium
Solution
Step 1: Understand
:and@usage:binds thevalueattribute tousername, so input shows 'Alice'.@inputlistens for input events to callupdateName.Step 2: Predict behavior
The input box displays 'Alice' initially and updatesusernameas user types.Final Answer:
An input box showing 'Alice' that updates username on typing. -> Option DQuick Check:
':' binds value, '@' listens to input event [OK]
Hint: ':' binds data, '@' listens to events [OK]
Common Mistakes:
- Thinking ':' sets literal text instead of binding
- Confusing '@' with binding syntax
- Assuming syntax error on input element
4. Identify the error in this Vue template snippet:
<button :click="submitForm">Submit</button>
medium
Solution
Step 1: Check directive usage for events
Events requirev-on:or shorthand@, notv-bind:or:.Step 2: Identify incorrect shorthand
The snippet uses:click, which is wrong; it should be@click.Final Answer:
Using ':' instead of '@' for event listening. -> Option AQuick Check:
Use '@' for events, not ':' [OK]
Hint: Use '@' for events, ':' only for binding [OK]
Common Mistakes:
- Confusing ':' and '@' usage
- Thinking 'v-bind' works for events
- Assuming quotes missing cause error here
5. You want to bind a dynamic CSS class and listen for a custom event
save on a component. Which is the correct Vue shorthand syntax?hard
Solution
Step 1: Bind dynamic class attribute
Use:shorthand forv-bind:to bindclassdynamically.Step 2: Listen for custom event
Use@shorthand forv-on:to listen forsaveevent.Step 3: Verify correct pairing
<MyComponent :class="dynamicClass" @save="handleSave" />correctly bindsclassand listens tosaveevent with proper shorthand.Final Answer:
<MyComponent :class="dynamicClass" @save="handleSave" /> -> Option BQuick Check:
':' for binding, '@' for events [OK]
Hint: Bind with ':', listen with '@' for clean syntax [OK]
Common Mistakes:
- Swapping binding and event shorthand
- Using '@' for binding attributes
- Mixing handler and data names incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknown
10 questions ~5 mineasy hard
