v-bind Directive in Vue.js
The v-bind directive is a Vuejs directive used to bind one or more attributes, or a component prop to an element. If that attribute is bound to our data defined in Vuejs instance then dynamic changes can be observed as data changes. First, we will create a div element with id as app, and let's apply the v-bind directive to an element. Further, we can use a button to execute a function when a click even occurs which will inverse the value of data.
Syntax:
v-bind:attribute="expression";
Since developers use this attribute too often, Vuejs provides a shorthand for this attribute as follows:
:attribute="expression";
Things we can do with v-bind:
- Multiple classes can be passed.
- Classes can be passed as arrays.
- Supports variables to be assigned as a condition for classes and props.
- Supports variable as arrays also.
- It can be used in child components also.
- Inline styles can also be assigned using v-bind.
Parameters: This directive accepts expression which will be deciding which attribute value to use.
Example: This example uses Vuejs to toggle the classes of an element with v-bind. Further, we will use CSS to apply a different color to each class so that we can see them changing.
<!DOCTYPE html>
<html>
<head>
<!-- Load Vuejs -->
<script src=
"https://cdn.jsdelivr.net/npm/vue/dist/vue.js">
</script>
<style>
.active {
color: blue;
}
.error {
color: red;
}
</style>
</head>
<body>
<div style="text-align: center;width: 600px;">
<h1 style="color: green;">
GeeksforGeeks
</h1>
<b>
VueJS | v-bind directive
</b>
</div>
<div id="canvas" style=
"border:1px solid #000000;
width: 600px;height: 200px;">
<div id="app" style=
"text-align: center;
padding-top: 40px;">
<button v-on:click=
"ifActive = !ifActive">
Click to Toggle
</button>
// here we have used the : short hand of v-bind:
<h1 :class=
"{active: ifActive, error: !ifActive}">
GeeksforGeeks
</h1>
</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
ifActive: true
}
})
</script>
</body>
</html>
Output: