1. 程式人生 > >Vue2 框架整理:子元件向父元件傳遞資料,$emit() 或 v-on

Vue2 框架整理:子元件向父元件傳遞資料,$emit() 或 v-on

這裡寫圖片描述

當子元件向父元件傳遞資料的時候,需要的是自定義事件: $on & $emit

子元件用$emit()觸發事件, 父元件用$on() 監聽子元件的事件

或者父元件也可以直接在子元件的自定義標籤上使用v-on來監聽子元件觸發的自定義事件:

$emit() 中第一個引數是方法的名稱,後面都是根據需求設定要傳遞的資料

比如: (下面所有 v-on 簡寫為語法糖@)


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title
>
Title</title> <style> #v1{ display: none; width:200px; margin: 100px; border: 2px solid #faf; } </style> </head> <body> <div id="v1"> <v-component @add="sum" @reduce="sum"></v-component
>
<p>計算結果:
{{ total }}</p> </div> <script src="vue.min.js"></script> <script> window.onload=function () { document.getElementById("v1").style.display="block"; }; Vue.component('v-component',{ template:'<div>'+ '<button @click="comPlus">點我加一</button> '
+ '<button @click="comMinus">點我減一</button>'+ '</div>', data:function () { return{ num:0 } }, methods:{ comPlus:function () { this.num++; this.$emit('add',this.num); }, comMinus:function () { this.num--; this.$emit('reduce',this.num); } } }); var app=new Vue({ el:"#v1", data:{ total:0 }, methods:{ sum:function (total) { this.total=total; } } })
</script> </body> </html>

實現效果:
這裡寫圖片描述