vue中this.$parent的使用方式
vue組件this.$parent
在使用vue時,你可能會用到this.$parent來進行組件與組件或者組件與外部實例的數(shù)據(jù)以及方法調(diào)用,這里簡單介紹下兩種使用環(huán)境.(這里你可以理解外部實例為非第三方組件)
一、在實例中
this.$parent 寫在組件里面,外部實例調(diào)用此組件,則其指向vue實例(這里是調(diào)用組件的實例),你可以在組件中調(diào)用 data,methods:
//例子 ?? ?this.$parent.list;//數(shù)據(jù)(模擬) ?? ?this.$parent.request();//方法(模擬)
二、在組件中調(diào)用組件
this.$parent 寫在組件里面,外部組件調(diào)用此組件,則其指向這個組件:
舉個例子:
比如elementPlus的組件 el-menu ,我們將其里面的一級二級菜單封裝為一個組件,命名為 name:‘DemoMenu’,
//例子 ?? ?<el-menu> ?? ??? ?<DemoMenu :list='list'/> ?? ?</el-menu>
這種使用方式 this.$parent 就不是指向外部實例,而是指向 el-menu;
vue子組件this.$parent調(diào)用父組件方法報錯
TypeError:this.parent.xxx is not a function
在做 vue 項目開發(fā)時,遇到了在子組件中利用this.$parent調(diào)用父組件的自定義方法,報TypeError: this.$parent.xxx is not a function的錯,可是在父組件明明定義了該方法,遂查詢 vue.js 的官方文檔,但是文檔也只有簡短的說明,并沒有相關的錯誤提示。
官方文檔中沒有提示,那就只能自己動手找原因了,隨即就在子組件中打印了this.$parent ,通過控制臺的打印,發(fā)現(xiàn)打印出來的 this.$parent并不是該組件的父組件,而是 Element ui 的組件,原來是我在父組件引用子組件的時候還在外面套了多層 UI 組件導致的。
<div class='app-container'> ?? ?<el-row :guter='20'> ?? ??? ?<el-col> ?? ??? ??? ?...... ?? ??? ??? ?<el-card> ?? ??? ??? ?...... ?? ??? ??? ??? ?<el-tabs v-model="activeName" @tab-click="handleClick"> ? ? ?? ??? ??? ? ?? ?<p slot="title">標題</p> ? ? ??? ??? ??? ??? ?<my-component></my-component> ??? ??? ??? ??? ?</el-tabs> ?? ??? ??? ?</el-card> ?? ??? ?</el-col> ?? ?</el-row> </div>
打印this.parent會發(fā)現(xiàn)my−component的父組件為 parent會發(fā)現(xiàn)my-component的父組件為parent會發(fā)現(xiàn)my−component的父組件為 $el:div#pane-userinfo.el-tab-pane,需要一直$this.parent.parent.parent.parent.parent.parent找到 $el:div.app-contain 才可調(diào)用父組件方法。
或者將子組件移到 UI 組件外面也可以調(diào)用到
<div class='app-container'> ??? ?<my-component></my-component>?? ?? </div>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue?element-ui的el-input-number默認值設置為空方法
這篇文章主要給大家介紹了關于vue?element-ui的el-input-number默認值設置為空的相關資料,el-input-number組件是Element?UI非常常用的一個數(shù)字輸入框組件,它提供了默認值設置的選項,需要的朋友可以參考下2023-08-08解決webpack-bundle-analyzer的問題大坑
這篇文章主要介紹了解決webpack-bundle-analyzer的問題大坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06Vue實現(xiàn)數(shù)字輸入框中分割手機號碼的示例
本篇文章主要介紹了Vue實現(xiàn)數(shù)字輸入框中分割手機號碼的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10解決vue-seamless-scroll滾動加點贊銜接處數(shù)據(jù)不同步問題
這篇文章主要介紹了解決vue-seamless-scroll滾動加點贊銜接處數(shù)據(jù)不同步問題,初步判斷可能是因為下方懸接vue-seamless-scroll是靜態(tài)的,沒同步DOM,本文給大家分享解決方法,感興趣的朋友一起看看吧2021-11-11