Vue.js - بحث Event Handling - آشنایی و شیوۀ استفاده از رویدادها - قسمت پنجم
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: دو دقیقه

در این قسمت به بحث رویدادها می‌پردازیم و اینکه به چه صورتی می‌توانیم از آن‌ها درون پروژه استفاده کنیم. فریم‌ورک Vue.js در عین سادگی می‌تواند نیاز شما را برآورده کرده و به نحو مطلوبی خروجی مناسبی را بدون هیچ دردسری، به شما تحویل دهد.
رویدادها یا همان eventها به ما این اختیار را می‌دهند که بتوانیم عمل خاصی را بر روی یک صفحه یا قسمت‌های مختلف درون پروژه اعمال کنیم و کاملا شبیه رویدادهایی است که در زبان‌های دیگر با آن کار کرده و آشنایی دارید.
برای شروع کار ابتدا نیاز است تا همانند قسمت‌های قبلی، کدهای صفحه مورد نظر خود را بنویسم و صفحه مورد نظر را ذخیره کنیم. کدها برای شروع کار، بدین شکل است که به صورت زیر نوشته و آماده شده است.
<html>
<head>
    <meta charset="UTF-8">
    <title>dotnet</title>
</head>
    <body id="dotnettips">
 <a v-on:click="message" href="bank.html">click here!</a> 
       <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/1.0.27/vue.min.js">
       </script>
       <script type="text/javascript">
     new Vue({
        el: '#dotnettips',
        data:{
        },
        methods:{
            message: function () {
                alert("hi friends");
            }
        }
    });
        </script>      
        </body>
</html>
در کدهای بالا قسمت body طبق روال همیشگی یک id را به خود اختصاص داده است و لازم است که بدانیم مشخصه‌ی id درون بدنه‌ی vue و مشخصه‌ی el به کدام بخش تعلق گرفته است.
دقت بفرمائید که ما نیاز داریم تا یک function بنویسم و رویداد مورد نظر را اجرا کنیم که جهت آزمایش به دو صفحه html نیاز است و در بخش زیر از کدهای فوق قابل مشاهده است.

vue مورد نظر و متد برای اجرای رویداد بدین شکل نوشته شده است.
  new Vue({
        el: '#dotnettips',
        data:{

        },
        methods:{
            message: function () {
                alert("hi friends");
            }
        }
    });
حال باید رویداد هدایت شود که از تگ a استفاده شده است. به صورت زیر:
<html>

<head>
    <meta charset="UTF-8">
    <title>dotnet</title>
</head>

    <body id="dotnettips">

 <a v-on:click="message" href="bank.html">click here!</a>
لازم به اشاره است که جهت معرفی رویدادی به صفحه دیگر باید از دستور v-on که vuejs در اختیار ما قرار داده است، استفاده کرد و ما نیز چنین کدی را نوشته‌ایم و صفحه مورد نظر را ارجاع داده‌ایم.
  • حتما باید نام متد به رویداد کلیک معرفی شود که در کد فوق قابل مشاهده است.
نام صفحه مورد نظر برای ارجاع : bank.html
دقت شود، درون vue که نوشته شده‌است، یک متد نیز فراخوانی شده است تا رویداد، اجرا شود و ما نام آن متد را message در نظر گرفته‌ایم. 
دو صفحه به دلخواه ساخته شده‌است که نام صفحه اول با نام cc.html و صفحه دوم با نام bank.html ایجاد شده‌اند. زمان اجرای رویداد، به صفحه دوم و دریافت پیغام hi friends، توسط تابعی که نوشته‌ایم و نمایش آن بر روی صفحه مواجه خواهیم شد. بدین معنی است که رویداد به درستی اجرا شده است و سپس به صفحه دوم هدایت می‌شویم.
تصویری از خروجی ضمیمه شده است.

  • #
    ‫۵ سال و ۳ ماه قبل، سه‌شنبه ۱۴ خرداد ۱۳۹۸، ساعت ۱۴:۳۱
    یک نکته‌ی تکمیلی: نحوه‌ی انتخاب یک المنت در Vue.js

    در Vue.js  چندین روش برای انتخاب یک المنت وجود دارند که در ادامه آن‌ها را مورد بررسی قرار میدهیم.
     کد زیر را در نظر بگیرید، ما قصد داریم value موجود در input  را نمایش دهیم.

    روش اول: با استفاده از جاوا اسکریپت
    <!DOCTYPE html>
    
    <head>
        <meta charset="UTF-8">
        <title>Vue.js گرفتن یک المنت در </title>
    </head>
    
    <body>
        <div id="main">
            <input type="text" name="fullName" id="fullName">
            <button @click='getFullNameValue()'>Show Me</button>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            new Vue({
                el: '#main',
                data() {
                    return {
    
                    }
                },
                methods: {
                    getFullNameValue() {
                        let fullNameValue = document.querySelector('#fullName').value;
                        alert(fullNameValue);
                    }
                }
            });
        </script>
    </body>
    
    </html>
    با استفاده از دستور زیر در جاوا اسکریپت براحتی میتوانیم یک المنت را انتخاب کنیم و آن را به یک متغیر انتساب دهیم.
     let fullNameValue = document.querySelector('#fullName')

    روش دوم: انتخاب یک المنت با جی کوئری (با سلکتور دلخواه)
    getFullNameValue() {
                        //let fullNameValue = document.querySelector('#fullName').value;
                        let fullNameValue = $('#fullName');
                        alert(fullNameValue.val());
    }

    روش سوم: انتخاب یک المنت در حیطه نمونه سازی شده  Vue.js
    getFullNameValue() {
                        //let fullNameValue = document.querySelector('#fullName').value;
                        //let fullNameValue = $('#fullName').val();
                        let fullNameValue = this.$el.querySelector('#fullName');
                        alert(fullNameValue.value );
    }

    روش چهارم: انتخاب یک المنت از طریق امکان ref  در  Vue.js
    <!DOCTYPE html>
    
    <head>
        <meta charset="UTF-8">
        <title>Vue.js گرفتن یک المنت در </title>
    </head>
    
    <body>
        <div id="main">
            <input type="text" name="fullName" id="fullName" ref="refFullName">
            <button @click='getFullNameValue()'>Show Me</button>
        </div>
        <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script>
            new Vue({
                el: '#main',
                data() {
                    return {
    
                    }
                },
                methods: {
                    getFullNameValue() {
                        //let fullNameValue = document.querySelector('#fullName').value;
                        //let fullNameValue = $('#fullName').val();
                        //let fullNameValue = this.$el.querySelector('#fullName').value;
                        let fullNameValue = this.$refs.refFullName;
                        alert(fullNameValue.value);
                    }
                }
            });
        </script>
    </body>
    
    </html>

    نتیجه گیری:
    از لحاظ performance  روش سوم و چهارم بهینه می‌باشند؛ زیرا فقط در حیطه نمونه سازی شده  Vue.js  مربوطه جستجوی المنت را انجام میدهند. درحالیکه در روش اول و دوم کل DOM  مورد بررسی قرار میگیرد. روش چهارم بخاطر سهولت نوشتاری بهتر از سایر موارد می‌باشد.
    چند نکته در مورد کد فوق:
    A) در ES6 نیازی به نوشتن کلمه کلیدی function برای تعریف یک متد نیست.
     getFullNameValue: function() {
                      ...
                    }
    و میتوان بصورتی که در مثال کد استفاده شده، آن را خلاصه نمود.
    B)  در ورژن جدید  Vue.js  بجای استفاده از دایرکتیو  v-on  ( کد زیر ) برای تعریف یک رویداد میتوان از  @ استفاه نمود. در مثال مورد استفاده‌ی مقاله از @ استفاده شده است.
      <button v-on:click='getFullNameValue()'>Show Me</button>