vue中 關於$emit的用法
1、父元件可以使用 props
把資料傳給子元件。
2、子元件可以使用 $emit
觸發父元件的自定義事件。
vm.$emit( event, arg ) //觸發當前例項上的事件
vm.$on( event, fn );//監聽event事件後執行 fn;
例如:子元件:
<template>
<div class="train-city">
<h3>父元件傳給子元件的toCity:{{sendData}}</h3>
<br/><button @click='select(`大連`)'>點選此處將‘大連’發射給父元件</button>
</div>
</template>
<script>
export default {
name:'trainCity',
props:['sendData'], // 用來接收父元件傳給子元件的資料
methods:{
select(val) {
let data = {
cityname: val
};
this.$emit('showCityName',data);//select事件觸發後,自動觸發showCityName事件
}
}
}
</script>
父元件:
<template>
<div>
<div>父元件的toCity{{toCity}}</div>
<train-city @showCityName="updateCity" :sendData="toCity"></train-city>
</div>
<template>
<script>
import TrainCity from "./train-city";
export default {
name:'index',
components: {TrainCity},
data () {
return {
toCity:"北京"
}
},
methods:{
updateCity(data){//觸發子元件城市選擇-選擇城市的事件
this.toCity = data.cityname;//改變了父元件的值
console.log('toCity:'+this.toCity)
}
}
}
</script>
圖一:點選之前的資料
圖二:點選之後的資料
vue.js
中$emit
的理解
官網介紹比較簡單
例子:$emit('increment1',[12,'kkk'])
,直接看是懵逼的有沒有,可以先告訴你,就是觸發自定義事件increment1
(或者函式名吧),[]
為引數
上案例
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="counter-event-example">
<p>{{ total }}</p>
<button-counter v-on:increment1="incrementTotal"></button-counter>
<button-counter v-on:increment2="incrementTotal"></button-counter>
</div>
</body>
<script src="vue/vue.min.js"></script>
<script>
Vue.component('button-counter',{
template:'<button v-on:click="increment">{{ counter }}</button>',
data:function(){
return {counter: 0}//元件資料就是這樣的,函式式的,請注意
},
methods:{
increment:function(){
this.counter += 1;
this.$emit('increment1',[12,'kkk']);//$emit
}
}
});
new Vue({
el:'#counter-event-example',
data:{
total:0
},
methods:{
incrementTotal:function(e){
this.total += 1;
console.log(e);
}
}
});
</script>
</html>
先看元件 button-counter
繫結了事件click
————>increment
然後 this.counter += 1; this.$emit('increment1',[12,'kkk']);
這邊就是觸發事件 increment1
,參考文獻裡面有點亂,這邊是不是清晰多了
然後 <button-counter v-on:increment1="incrementTotal"></button-counter>
v-on
相當於監聽吧,就觸發 incrementTotal
輸出// [12, "kkk"]
有沒有很清晰,若有理解不對的地方,請指正
vue
—子調父 $emit
(把子元件的資料傳給父元件)
ps:App.vue 父元件
Hello.vue 子元件
<!--App.vue :-->
<template>
<div id="app">
<hello @newNodeEvent="parentLisen" />
</div>
</template>
<script>
import hello from './components/Hello'
export default {
name: 'app',
'components': {
hello
},
methods: {
parentLisen(evtValue) {
//evtValue 是子元件傳過來的值
alert(evtValue)
}
}
}
</script>
<!--Hello.vue :-->
<template>
<div class="hello">
<input type="button" name="" id="" @click="chilCall()" value="子調父" />
</div>
</template>
<script>
export default {
name: 'hello',
'methods': {
chilCall(pars) {
this.$emit('newNodeEvent', '我是子元素傳過來的')
}
}
}
</script>
相關文章
- vue中$emit與$onVueMIT
- 關於JavaScript中arguments的用法JavaScript
- 關於C#中async/await的用法C#AI
- 【Vue3.0】關於 script setup 語法糖的用法Vue
- vue 中this.$emit()的返回值是什麼?VueMIT
- Vue 中 $on $once $off $emit 詳細分析,以及使用VueMIT
- 專案中關於解構的常用用法
- 關於AI、關於chatGPT的幾十種用法AIChatGPT
- 關於Linux中“!”你不知道的驚歎用法Linux
- Shell 中 $ 關於指令碼引數的幾種用法指令碼
- Vue中scoped與CSSModules的用法VueCSSSSM
- vue元件化中slot的用法Vue元件化
- 關於Vue中插槽的理解和總結Vue
- 關於 lambda 在 WebDriverWait () 中的用法實在不明白WebAI
- 關於 Express API app.use 中的 path 引數用法ExpressAPIAPP
- 關於angularJS的一些用法AngularJS
- vue中關於測試的知識介紹Vue
- Vue3中markRaw用法Vue
- vue中子元件傳遞父元件$emitVue元件MIT
- Vue EventBus事件偵聽($on、$emit、$off、$once)Vue事件MIT
- vue-router中scrollBehavior的巧妙用法Vue
- 深入解析Vue中watch的高階用法Vue
- Vue.js中 watch 的高階用法Vue.js
- 詳解Vue中watch的高階用法Vue
- Vue.js 2.0中$on與$emit如何使用之例項講解Vue.jsMIT
- Vue slot的用法Vue
- 關於with 臨時表 as的一些用法
- 關於 Node.js Stream API 的用法概述Node.jsAPI
- vue之prop,emit資料傳遞示例VueMIT
- Vue .sync修飾符與$emit(update:xxx)VueMIT
- vue中:is的用法,動態顯示需要的元件Vue元件
- Vue3.4+版本中的 defineModel 宏的用法示例Vue
- 【VUE】vue-router的基本用法Vue
- 關於 Redis & 常用用法詳情Redis
- python關於pymysql 執行sql語句in的用法PythonMySql
- vue之watch的用法Vue
- 淺談vue中provide和inject 用法VueIDE
- vue3 元件中props,emits用法Vue元件MIT