Difference between v-bind and v-model in Vue.js

This article covers the difference between v-model and v-bind in Vue.js. The following steps are used to explain their differences.
The v-model is a two-way binding which means if you change the input value, the bound data will be changed. The v-model directive is used to create two-way data bindings on form input, textarea, and select elements.
Example:
HTML
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content= "width=device-width, initial-scale=1.0"> <title>Difference between v-model and v-bind</title> <style> .container { display: flex; justify-content: center; align-items: center; } p { padding-left: 20px; } h1,h2 { text-align: center; } h1{ color: green; font-size: 40px; } </style></head><body> <section id="app-vue"> <h1>zambiatek</h1> <h2>V-Model Example</h2> <div class="container"> <input type='text' v-model='Message' /> <p> Message: {{ Message}} </p> </div> </section> <script> new Vue({ el: '#app-vue', data() { return { Message: '' } } }); </script></body></html> |
Output: This example means that if our data changes, our input too will change, and if our input changes, our data changes too.
The v-bind is called one-way binding which means it binds our data one way. It can also be used to bind HTML attributes. This example shows a one-way data-binding using our style element using v-bind.
Example:
HTML
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content= "width=device-width, initial-scale=1.0"> <title>Difference between v-model and v-bind</title> <style> .container { display: flex; justify-content: center; align-items: center; } h1, h2 { text-align: center; } h1 { color: green; font-size: 40px; } </style></head><body> <section id="app-vue"> <h1>zambiatek</h1> <h2>V-bind Example</h2> <div v-bind:style="headingText"> Ezekiel Michael </div> </section> <script> new Vue({ el: '#app-vue', data: { headingText: { color: 'red', fontSize: '40px', textAlign:'center' } } }); </script></body></html> |
Output:
Below are differences between v-model and v-bind
| V-MODEL | V-BIND |
| v-model can be changed or assigned. | v-bind can only be assigned. |
| v-model is a two-way binding. | v-bind is a one-way binding. |
| v-model is used for binding form elements like inputs, radio buttons, textarea, checkboxes. | It is used for binding data, attributes, expressions, class, styles. |
| V-model is input value sensitive. | It is also used to pass props to child components. |
| It can be implemented using Local variable watcher | It is a directive that is used to bind one or more attributes |




