<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
主要介紹元件的自定義事件的概念,使用等。
何為元件自定義事件:
先使用props加回撥函數實現子元件傳遞資料給父元件。
main.js:
//引入vue依賴 import Vue from 'vue' //引入元件App import App from './App.vue' // 關閉生產提示 Vue.config.productionTip = false //建立一個vue範例 new Vue({ //這個目前還沒學過,先知道他的作用是將app放入容器中。 render: h => h(App), //設定該vue範例管理id為app的容器 }).$mount('#app')
App.vue:
<template> <!-- 編寫結構 --> <div> <!-- 傳遞迴撥函數給子元件School --> <school :getSchoolNameFromSchoolVc="getSchoolNameFromSchoolVc"></school> <hr> <student></student> <div>App獲取School子元件的學校名:{{schoolNameFromSchool}}</div> </div> </template> <script> // 原本的引入 // import school from "./School.vue" // import student from "./Student.vue" //修改後的 //引入school元件和student元件,涉及es模組化的語法 import school from "./components/School.vue" import student from "./components/Student.vue" export default { data() { return { schoolNameFromSchool:"" } }, components:{ //註冊元件 school, student }, methods:{ //定義一個回撥函數並傳遞給子元件School getSchoolNameFromSchoolVc(schoolName){ console.log("App獲取School子元件的學校名:",schoolName); //賦值給schoolNameFromSchool this.schoolNameFromSchool = schoolName; } } } </script> <style> </style>
schoo.vue:
<template> <!-- 編寫元件結構程式碼,也就是html程式碼 --> <!-- 需要一個div括住,也就是隻能有一個根元素,一般使用div --> <div class="orange"> <div>學校:{{schoolName}}</div> <div>地址:{{schoolAddress}}</div> <!-- //定義一個按鈕,點選傳遞學校名稱給App元件。 --> <button @click="sendSchoolNameToApp">傳遞學校名給App元件</button> </div> </template> <script> //互動程式碼編寫的地方,需要暴露出去給其他地方引入 //這個需要有一點es6模組化的知識,這裡一般使用預設暴露,因為這是單檔案元件,只需要暴露一個元件物件, //並且引入預設暴露的元件引入語法比較簡單。 export default { data() { return { schoolName:"尚矽谷", schoolAddress:"北京" } }, //接收回撥函數 props:["getSchoolNameFromSchoolVc"], methods:{ sendSchoolNameToApp(){ //呼叫回撥函數,並把學校名傳遞進去 this.getSchoolNameFromSchoolVc(this.schoolName) } } } </script> <style scoped> /* 編寫樣式的地方 */ .orange{ background-color: orange; } </style>
student.vue:
<template> <!-- 編寫元件結構程式碼,也就是html程式碼 --> <!-- 需要一個div括住,也就是隻能有一個根元素,一般使用div --> <div class="orange"> <div>學生姓名:{{studentName}}</div> <div>年齡:{{studentAge}}</div> </div> </template> <script> //互動程式碼編寫的地方,需要暴露出去給其他地方引入 //這個需要有一點es6模組化的知識,這裡一般使用預設暴露,因為這是單檔案元件,只需要暴露一個元件物件, //並且引入預設暴露的元件引入語法比較簡單。 export default { data() { return { studentName:"張三", studentAge:18 } }, } </script> <style> /* 編寫樣式的地方 */ .orange{ background-color: gray; } </style>
這種方式的流程:
1.在父元件(App)中定義一個回撥方法並傳遞給子元件(School)。
該回撥方法是把School元件傳遞過來的學校名渲染在App元件對應的區域。
2.子元件使用props設定項接收回撥函數,並且編寫一個按鈕,點選就呼叫該回撥函數把資料傳遞到App元件中。
效果:
第二種方式是使用元件自定義事件實現:
使用元件自定義事件實現把子元件Student的學生名傳遞到App元件,並進行渲染。
分一下步驟:
3. 在父元件App中,設定自定義事件,並設定一個事件回撥
4. 在子元件中,觸發自定義事件,把值傳過去。
效果:
除了在元件標籤中繫結自定義事件,也可以配合ref屬性在生命週期回撥函數$mounted中進行繫結。
執行效果一樣的。
自定義事件照樣可以使用事件修飾符once。
使用props或者元件自定義事件進行子元件像父元件傳遞資料的方式是比較像的。
props的方式是直接把回撥函數傳遞給子元件呼叫。
而元件自定義事件是把回撥函數通過事件的方式暴露出去,然後子元件通過觸發事件,達到呼叫回撥函數的效果。
解綁元件自定義事件:
或者元件被銷燬時,這些自定義事件會被銷燬。
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45