Vue入門—事件與方法詳解

半指溫柔樂發表於2018-08-25

一、 vue方法實現

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>Vue方法與事件</title>
 6         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 7         <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
 8     </head>
 9     <body>
10         <div id="test">
11             <button @click="sayHi">點選我</button> <!--這裡使用@-->
12         </div>
13         <script type="text/javascript">
14             var myVue = new Vue({
15                 el: `#test`,
16                 methods: {      //這裡使用methods
17                     sayHi: function () {
18                         alert(`我被點選了`)
19                     }
20                 }
21             })
22         </script>
23     </body>
24 </html>

二、 方法傳參

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>Vue方法與事件</title>
 6         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 7         <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
 8     </head>
 9     <body>
10         <div id="test">
11             <button @click="sayHi(`你好`)">說你好</button> <!--這裡使用@-->
12             <button @click="sayHi(`我被點選了`)">說我被點選了</button> <!--這裡使用@-->
13         </div>
14         <script type="text/javascript">
15             var myVue = new Vue({
16                 el: `#test`,
17                 methods: {      //這裡使用methods
18                     sayHi: function (message) {
19                         alert(message)
20                     }
21                 }
22             })
23         </script>
24     </body>
25 </html>

 

三 、vue訪問原生 DOM 事件

注意用$event獲取

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>Vue方法與事件</title>
 6         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 7         <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
 8     </head>
 9     <body>
10         <div id="test">
11             <button @click="changeColor(`你好`,$event)">點選我</button> <!--這裡使用@-->
12             <div style="height: 100px;width: 100px;background-color: red;" @mouseover="over(`滑鼠從我上面滑過`,$event)">
13                 滑鼠從我上面滑過試試
14             </div>
15         </div>
16         <script type="text/javascript">
17             var myVue = new Vue({
18                 el: `#test`,
19                 methods: {      //這裡使用methods
20                     changeColor: function (message, event) {
21                         alert(message+event);    //彈出我被點選了,事件是[object MouseEvent]
22                     },
23                     over :function (message, event) {
24                         alert(message+event);   //彈出滑鼠從我上面滑過,事件是[object MouseEvent]
25                     }
26                 }
27             })
28         </script>
29     </body>
30 </html>

 

四、 事件修飾符

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Vue方法與事件</title>
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body>
        <div id="test">
            <button @click.stop="sayHi(`你好`)">說你好</button> <!-- 阻止單擊事件冒泡 -->
            <button @click.prevent="sayHi(`你好`)">說你好</button> <!-- 提交事件不再過載頁面 -->
            <button @click.stop.prevent="sayHi(`你好`)">說你好</button> <!-- 阻止單擊事件冒泡和提交事件不再過載頁面 -->
            <button @click.capture="sayHi(`你好`)">說你好</button>  <!-- 新增事件偵聽器時使用 capture 模式 -->
            <button @click.self="sayHi(`你好`)">說你好</button>    <!-- 只當事件在該元素本身(而不是子元素)觸發時觸發回撥 -->
            
            <div @keyup.13="sayHi(`你好`)">說你好</div>  <!-- 只有在 keyCode 是 13 時呼叫 vm.submit() -->
        </div>
        <script type="text/javascript">
            var myVue = new Vue({
                el: `#test`,
                methods: {      //這裡使用methods
                    sayHi: function (message) {
                        alert(message)
                    }
                }
            })
        </script>
    </body>
</html>

 

 五、常用事件

  v-on:click/mouseover……

  簡寫的:    @click=””   推薦

  1、事件物件:
    @click=”show($event)”
  2、事件冒泡:
    阻止冒泡:
    a). ev.cancelBubble=true;
    b). @click.stop 推薦
  3、預設行為(預設事件):
    阻止預設行為:
      a). ev.preventDefault();
      b). @contextmenu.prevent 推薦
  4、鍵盤:
    @keydown $event ev.keyCode
    @keyup

    常用鍵:
      回車
      a). @keyup.13
      b). @keyup.enter
      上、下、左、右
      @keyup/keydown.left  // 左
      @keyup/keydown.right  // 右
      @keyup/keydown.up // 上
      @keyup/keydown.down  // 下


相關文章