1. 程式人生 > 程式設計 >vue學習筆記之給元件繫結原生事件操作示例

vue學習筆記之給元件繫結原生事件操作示例

本文例項講述了vue學習筆記之給元件繫結原生事件操作。分享給大家供大家參考,具體如下:

當在父元件中定義一個點選事件,並且在父元件的methods中定義了這個點選事件時,在頁面上點選並不會有什麼反應。那麼該怎麼辦呢?

我們可以在子元件的template中的dom上定義一個點選事件(原生事件),並且在子元件的methods中定義該點選事件,然而點選頁面時也只會alert(child click )

這是為什麼呢?父元件的點選事件被vue當成自定義事件,點選後沒有檢測到,這時需要子元件向父元件觸發點選'自定義'事件,即 this.$emit('change') 。then,完成。先響應了child click,然後響應了click。

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8">
  <title>元件引數的校驗</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <child @change="handleClick"></child>  <!--此處父元件,相當於自定義事件-->
</div>
</body>
</html>
<script>
  Vue.component('Child',{
    template: '<div @click="handleChildClick">child</div>',/* 原生事件 */
    methods:{
      handleChildClick:function () {
        alert("child click")
        this.$emit('change') // 向父元件傳遞自定義事件
      }
    }
  })
  var vm = new Vue({
    el: '#app',methods:{
      handleClick:function () {
        alert("click");
      }
    }
  })
</script>

但是這樣好麻煩哦!!怎麼辦呢?

我們可以直接在父元件定義的@click後面加上native,告訴vue我定義的事件就是原生事件!!就一切?了

like this:

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="UTF-8">
  <title>元件引數的校驗</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <child @click.native="handleClick"></child>  <!--此處宣告,原生事件-->
</div>
</body>
</html>
<script>
  Vue.component('Child',{
    template: '<div>child</div>'
  })
  var vm = new Vue({
    el: '#app',methods:{
      handleClick:function () {
        alert("click");
      }
    }
  })
</script>

感興趣的朋友可以使用線上HTML/CSS/JavaScript程式碼執行工具:http://tools.jb51.net/code/HtmlJsRun測試上述程式碼執行效果。

希望本文所述對大家vue.js程式設計有所幫助。