最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)父組件獲取子組件的方法或?qū)傩灾翟斀?/h1>
 更新時間:2022年03月31日 09:22:31   作者:mini74  
這篇文章主要介紹了vue實現(xiàn)父組件獲取子組件的方法或?qū)傩灾翟斀?,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

父組件獲取子組件方法或?qū)傩灾?/h2>

vue的本質(zhì)就是每一塊只負責自己這一塊的工作,這樣更容易維護。

這里主要使用了vue的$ref

  • 當用在一般的標簽上時,主要功能是獲取dom節(jié)點,進行一些dom的操作。
  • 當使用在子組件上,可以用來獲取子組件的屬性。

那么下面我們要實現(xiàn)的就是如何在父組件上使用子組件的方法

目標:我需要實現(xiàn)一個在父組件上控制子組件的彈窗顯示,并且通過參數(shù)判斷顯示哪一個內(nèi)容。

首先我們很容易想到就是綁定一個點擊事件,并且攜帶一個參數(shù),并且獲取子組件的屬性,這樣在這個父組件中我并沒有控制子組件的開關(guān),只是我獲取了子組件的方法或者屬性,讓子組件自己控制開關(guān)。

//這里是子組件
<popup ?ref="popup"></popup>
//綁定點擊事件,并且攜帶參數(shù)
<div class="item-box" @click="showPop('teacher')">
//定義點擊事件
showPop(event) {
//獲取子組件的屬性/方法,這里是獲取popup子組件的show方法,并且攜帶參數(shù)
?? ?this.$refs.popup.show(event);
},

在子組件中就需要定義方法,控制顯示彈窗內(nèi)容,并且將傳遞過來的參數(shù)保存

//控制彈窗的顯示隱藏
<div v-show="showPopup">
? ? ?<!-- 關(guān)閉按鈕,點擊直接將showPopup定義為false-->
? ? ? <div class="closePopup" @click="showPopup = false"></div>
? ? ? <!-- 老師數(shù)量 -->
? ? ? //通過判斷type值控制顯示哪個彈窗內(nèi)容
? ? ? <teacher v-if="type =='teacher'"></teacher>
? ? ? <student v-else-if="type =='student'"></student>
? ? ? <turnover v-else></turnover>
</div>
//在data中定義默認值
data(){
? ? ?return {
? ? ? ? ? showPopup: false,
? ? ? ? ? type: ''
? ? ? }
? },
//最后在methods中定義show方法,控制彈窗的顯示
methods:{
? ?show(type){
? ? ? ? this.type = type
? ? ? ? this.showPopup = true;
? ? }
}

這樣就完成了,每個組件只負責我自己需要做的事情,不會影響到其他組件,這樣更易于維護。 

父組件獲取子組件中的變量

在vue項目日常開發(fā)中,難免要把功能性組件抽離出來,這樣結(jié)構(gòu)就會出現(xiàn)父子組價,兄弟組件等,但是這樣就會涉及到不同組件需要互相使用其中的值得問題。

之前有說過通過ref來讓父組件操作子組件,并且傳值,那么我們今天來詳細看看。

案例一:點擊父組件的按鈕,操作子組件顯示

注:可以通過獲取id/class來操作,這里我就不介紹這種方法了,至于jquery的話,在vue中還是慎用。

介紹:這里通過給子組件綁定ref屬性,引號命名自定義,然后父組件通過 this.$refs.名字 就可以操作子組件的元素,以改變它的樣式等。

<template>
? ? <div class="DbSource-box">
? ? ? ? <el-button type="primary" icon="" class="addBtn" @click="addDbSource()">新增</el-button>
? ? ? ? <db-source-add ref="addAlert" v-on:init="init"></db-source-add>
? ? </div>
</template>
<script>
? ? import DbSourceAdd from "../components/DbSourceManager/DbSourceAdd";
? ? export default {
? ? ? ? name: "DbSourceManager",
? ? ? ? components: {DbSourceAdd},
? ? ? ? methods: {
? ? ? ? ? ? // 點擊新增按鈕,彈出新增數(shù)據(jù)源的彈框
? ? ? ? ? ? addDbSource(){
? ? ? ? ? ? ? ? this.$refs.addAlert.$el.style.display = "block";
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>

案列二:獲取子組件data中的變量

父組件:

這里通過給子組件綁定ref屬性,引號中的命名自定義,然后父組件通過 this.$refs.名字.變量名 就可以獲得子組件中的值

<template>
? ? <div class="DbSource-box">
? ? ? ? <el-button type="primary" icon="" class="selectBtn" @click="deleteSelectDbSource()">批量刪除</el-button>
? ? ? ? <db-source-table ref="getSelectData" :Data="Data" v-on:init="init"></db-source-table>
? ? </div>
</template>
<script>
? ? import DbSourceTable from "../components/DbSourceManager/DbSourceTable";
? ? export default {
? ? ? ? name: "DbSourceManager",
? ? ? ? components: {DbSourceTable},
? ? ? ? methods: {
? ? ? ? ? ? // 刪除選中的數(shù)據(jù)源(批量刪除)
? ? ? ? ? ? deleteSelectDbSource(){
? ? ? ? ? ? ? ? console.log(this.$refs.getSelectData.multipleSelection)
? ? ? ? ? ? },
? ? ? ? }
? ? }
</script>

子組件:

<template>
? ? <div class="table-box">
? ? ? ??
? ? </div>
</template>
<script>
? ? export default {
? ? ? ? name: "DbSourceTable",
? ? ? ? props:["Data"],
? ? ? ? data(){
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? multipleSelection:[],
? ? ? ? ? ? ? ? pagesize: 3,
? ? ? ? ? ? ? ? currpage: 1,
? ? ? ? ? ? ? ? currId:""
? ? ? ? ? ? }
? ? ? ? }
</script>

好了,以上就是父組件獲取子組件的值并且操作子組件的方法。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 使用Vue3創(chuàng)建多布局系統(tǒng)的三種方法

    使用Vue3創(chuàng)建多布局系統(tǒng)的三種方法

    布局是中大型網(wǎng)站或應用的基礎,假設你正在創(chuàng)建一個網(wǎng)頁應用,它包括主頁、營銷頁面和應用頁面,你不會想要為每一頁重復所有的工作,對吧,與Nuxt不同,Vue 3并沒有內(nèi)置的布局系統(tǒng),但是別擔心,這里將向你展示3種簡單的方法來實現(xiàn)這一點,需要的朋友可以參考下
    2023-08-08
  • vue中設置height:100%無效的問題及解決方法

    vue中設置height:100%無效的問題及解決方法

    這篇文章主要介紹了vue中設置height 100%無效的問題及解決方法,需要的朋友可以參考下
    2018-07-07
  • vue+flv.js+SpringBoot+websocket實現(xiàn)視頻監(jiān)控與回放功能

    vue+flv.js+SpringBoot+websocket實現(xiàn)視頻監(jiān)控與回放功能

    vue+springboot的項目,需要在頁面展示出海康的硬盤錄像機連接的攝像頭的實時監(jiān)控畫面以及回放功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-02-02
  • vue實現(xiàn)書籍購物車功能

    vue實現(xiàn)書籍購物車功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)書籍購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • vue之如何實現(xiàn)打印功能

    vue之如何實現(xiàn)打印功能

    這篇文章主要介紹了vue之如何實現(xiàn)打印功能問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue elementUI table 自定義表頭和行合并的實例代碼

    vue elementUI table 自定義表頭和行合并的實例代碼

    這篇文章主要介紹了vue elementUI table 自定義表頭和行合并的實例代碼,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • vue3組件式彈窗打開的3種方式小結(jié)

    vue3組件式彈窗打開的3種方式小結(jié)

    這篇文章主要給大家介紹了關(guān)于vue3組件式彈窗打開的3種方式,彈窗組件是常見的交互組件,它能夠彈出一些提示信息、提醒用戶進行操作等等,需要的朋友可以參考下
    2023-07-07
  • Vue中如何進行數(shù)據(jù)響應式更新

    Vue中如何進行數(shù)據(jù)響應式更新

    Vue是一款流行的JavaScript框架,它提供了數(shù)據(jù)響應式更新的能力,可以讓我們輕松地更新數(shù)據(jù),并自動更新視圖,本文將介紹Vue中如何進行數(shù)據(jù)響應式更新,包括使用Vue的響應式系統(tǒng)、使用計算屬性和使用Vue的watcher,需要的朋友可以參考下
    2023-06-06
  • 使用Vue后如何針對搜索引擎做SEO優(yōu)化

    使用Vue后如何針對搜索引擎做SEO優(yōu)化

    本文介紹了Vue.js在SEO優(yōu)化方面的挑戰(zhàn),并提供了一些方法來解決這些問題,包括使用服務器端渲染、預渲染和使用VueRouter的History模式來生成靜態(tài)HTML頁面,以及添加meta信息和內(nèi)部鏈接來提高搜索引擎的索引和排名
    2025-02-02
  • vue-cli3單頁構(gòu)建大型項目方案

    vue-cli3單頁構(gòu)建大型項目方案

    這篇文章主要介紹了vue-cli3單頁構(gòu)建大型項目方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04

最新評論

仙居县| 宿州市| 岱山县| 晋州市| 特克斯县| 三江| 柯坪县| 都江堰市| 霍山县| 宁明县| 綦江县| 容城县| 上高县| 丰宁| 额尔古纳市| 洛隆县| 南涧| 河南省| 珠海市| 长顺县| 丁青县| 洛隆县| 百色市| 建宁县| 瑞金市| 香河县| 满城县| 友谊县| 松桃| 兴山县| 耿马| 沾益县| 阳山县| 上虞市| 安西县| 防城港市| 南陵县| 鲁甸县| 基隆市| 山东省| 青海省|