CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

04 February, 2021

Vue.js Custom Directives

 Programing Coderfunda     February 04, 2021     Vue.js Tutorial     No comments   

Vue.js Custom Directives

Vue.js directives are used in Vue.js applications to make them reusable and straightforward. Directives are just like instructions that can be used in Vue.js applications to do things in a specific way. We have already used simple conditional directives such as v-if, v-show, v-else, v-for, v-bind, v-model, v-on, etc. in our https://coderfunda.blogspot.com/ page.

Here, we will learn how to create custom and global directives and use them just like we did in Vue. js components https://coderfunda.blogspot.com/ because Vue.js allows us to create our own custom directives.

Syntax:

Example Explanation

In the above example, you can see that we have created a custom directive named "changestyle" as following:

  1. Vue.directive("changestyle",{  
  2.    bind(e1,binding, vnode) {  
  3.       console.log(e1);  
  4.       e1.style.color = "red";  
  5.       e1.style.fontSize = "20px";  
  6.    }  
  7. });  

Now, the custom directive "changestyle" is assigned to a div as follows:

  1. <div v-changestyle>Vue.js Custom Directive Example</div>  

How to pass a value to the custom directive?

We can pass values to the custom directive by binding values to them. Binding is like arguments passed to the custom directive.

Syntax:

  1. v-changestyle = "{color:'the_color_name'}".   

Let's take an example to demonstrate how to pass a value to the custom directive.

Index.html:

  1. <html>  
  2.    <head>  
  3.       <title>Vue.js Custom Directive</title>  
  4.       <link rel="stylesheet" href="index.css">  
  5.         <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  
  6.     </head>  
  7.     <body>  
  8.       <div id = "directive">  
  9.           <div v-changestyle = "{color:'green'}">Passing value to custom directive example</div>  
  10.       </div>  
  11.       <script type = "text/javascript">  
  12.          Vue.directive("changestyle",{  
  13.             bind(e1,binding, vnode) {  
  14.                console.log(e1);  
  15.                console.log(binding.value.color);  
  16.                console.log(vnode);  
  17.                e1.style.color=binding.value.color;  
  18.                e1.style.fontSize = "20px";  
  19.             }  
  20.          });  
  21.       </script>  
  22.       <script src="index.js"></script>  
  23.    </body>  
  24. </html>  

Index.js:

  1. var vm = new Vue({  
  2.             el: '#directive',  
  3.             data: {  
  4.             },  
  5.             methods : {  
  6.             },  
  7.          })  

After the execution of the program, you will see the following output:

Output:

Vue.js Custom Directives

You can see that the value is passed in the directive and the color of the text is changed to green. The value is passed by using the following code:

  1. <div v-changestyle = "{color:'green'}">Passing value to custom directive example</div>   

It is accessed by using the following code:

  1. Vue.directive("changestyle",{  
  2.    bind(e1,binding, vnode) {  
  3.       console.log(e1);  
  4.       console.log(binding.value.color);  
  5.       console.log(vnode);  
  6.       e1.style.color=binding.value.color;  
  7.       e1.style.fontSize = "20px";  
  8.    }  
  9. });  

Using Filters with Custom Directives

Vue.js supports filters that can be used in text formatting. The filters are generally used along with v-bind and interpolations ({{}}). We require using a pipe symbol at the end of JavaScript expression for filters.

Let's see an example to demonstrate the use of filters in the custom directive.

Index.html file:

  1. <html>  
  2.    <head>  
  3.       <title>Vue.js Custom Directive</title>  
  4.       <link rel="stylesheet" href="index.css">  
  5.         <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  
  6.     </head>  
  7.     <body>  
  8.       <div id = "directive">  
  9.                   <input  v-model = "name" placeholder = "Enter Your Name" /><br/>  
  10.          <span style = "font-size:20px;"><b>Letter count is : {{name | countletters}}</b></span>  
  11.       </div>  
  12.       </script>  
  13.       <script src="index.js"></script>  
  14.    </body>  
  15. </html>  

Index.js file:

  1. var vm = new Vue({  
  2.             el: '#directive',  
  3.            data: {  
  4.                name : ""  
  5.             },  
  6.             filters : {  
  7.                countletters : function(value) {  
  8.                   return value.length;  
  9.                }  
  10.             }  
  11.          })  

After the execution of the program, you will see the following output:

Output:

Vue.js Custom Directives

When you type any text in the above box, you can get the letter count as follows:

Vue.js Custom Directives

Example Explanation

In the above example, you can see that we have created a simple filter named "countletters". The countletters filter counts the numbers of characters entered in the textbox. We have to use the filter property and define the used filter as follows:

  1. filters : {  
  2.    countletters : function(value) {  
  3.       return value.length;  
  4.    }  
  5. }  

Here, we have defined the method countletters and then returned the length of the entered string.

Now, we have used the pipe operator and the name of the filter "countletters" to display the filter's result in output:

  1. <span style = "font-size:20px;"><b>Letter count is : {{name | countletters}}</b></span> 

 

 
 
  1. Vue.directive('name_of_the_directive', {  
  2.    bind(e1, binding, vnode) {  
  3.    }  
  4. })   

To create a custom directive, we have to use Vue.directive and the name of the directive, as shown in the above syntax. Let us see an example to demonstrate how to create a custom directive and how to use it.

Index.html file:

  1. <html>  
  2.    <head>  
  3.       <title>Vue.js Custom Directive</title>  
  4.       <link rel="stylesheet" href="index.css">  
  5.         <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  
  6.     </head>  
  7.     <body>  
  8.       <div id = "directive">  
  9.           <div v-changestyle>Vue.js Custom Directive Example</div>  
  10.       </div>  
  11.        <script type = "text/javascript">  
  12.          Vue.directive("changestyle",{  
  13.             bind(e1,binding, vnode) {  
  14.                console.log(e1);  
  15.                e1.style.color = "red";  
  16.                e1.style.fontSize = "20px";  
  17.             }  
  18.          });  
  19.          var vm = new Vue({  
  20.             el: '#directive',  
  21.             data: {  
  22.             },  
  23.             methods : {  
  24.             },  
  25.          });  
  26.       </script>  
  27.       <script src="index.js"></script>  
  28.    </body>  
  29. </html>  

Index.js file:

  1. var vm = new Vue({  
  2.             el: '#directive',  
  3.             data: {  
  4.             },  
  5.             methods : {  
  6.             },  
  7.          })  

Let's use a simple CSS file to make the output more attractive.

Index.css file:

  1. html, body {  
  2.     margin: 5px;  
  3.     padding: 0;  
  4. }  

After the execution of the program, you will see the following output:

Source : javatpoint

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • VueJS Examples Example 1: Currency Converter<html> <head> <title>VueJs Instance</title> <script type = "text/javascript"… Read More
  • VueJS Render Function We have seen components and the usage of it. For example, we have a content that needs to be reused across the project. We can convert the same … Read More
  • VueJS - Reactive InterfaceVueJS provides options to add reactivity to properties, which are added dynamically. Consider that we have already created vue instance and need to ad… Read More
  • VueJS MixinsMixins are basically to be used with components. They share reusable code among components. When a component uses mixin, all options of mixin become a… Read More
  • VueJS RoutingVueJS does not have a built-in router feauture. We need to follow some additional steps to install it.Direct Download from CDNThe latest version of vu… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh
    I had follow these steps to install an configure firebase to my cordova project for cloud messaging. https://medium.com/@felipepucinelli/how...
  • Spring boot app (error: method getFirst()) failed to run at local machine, but can run on server
    The Spring boot app can run on the online server. Now, we want to replicate the same app at the local machine but the Spring boot jar file f...
  • Log activity in a Laravel app with Spatie/Laravel-Activitylog
      Requirements This package needs PHP 8.1+ and Laravel 9.0 or higher. The latest version of this package needs PHP 8.2+ and Laravel 8 or hig...
  • Step-by-step guide to linking gnuplot to Octave within Virtual Studio Code (VSC)
    I am aware of a number of previous questions (here, here and here for example) pointing out to the need to modify a file named .octaverc. ...
  • SQL Tutorial
    SQL Tutorial SQL HOME SQL Intro SQL Syntax SQL Select SQL Select Distinct SQL Where SQL And, Or, Not SQL Order By SQL Insert Into SQL Null V...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (68)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024
  • pyspark XPath Query Returns Lists Omitting Missing Values Instead of Including None - 9/20/2024
  • SQL REPL from within Python/Sqlalchemy/Psychopg2 - 9/20/2024
  • MySql Explain with Tobias Petry - 9/20/2024
  • How to combine information from different devices into one common abstract virtual disk? [closed] - 9/20/2024

Laravel News

  • Track Metrics Effortlessly with Laravel's Context Increment and Decrement Methods - 5/4/2025
  • NativePHP Hit $100K — And We're Just Getting Started 🚀 - 5/8/2025
  • Name Queued Closures in Laravel 12.13 - 5/9/2025
  • Simplify HasManyThrough Relationships with Laravel's CanBeOneOfMany Support - 5/4/2025
  • Using Database Comments to Track Columns With Sensitive Data - 5/7/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda