vue中父組件控制子組件的顯示隱藏詳解
需求
父組件點(diǎn)擊新增或者修改時(shí),子組件對(duì)話框顯示
子組件的標(biāo)題和確認(rèn)按鈕,根據(jù)父組件單擊按鈕來(lái)改變

做法
在子組件內(nèi)部做一個(gè)show方法(函數(shù)名隨意),在子組件內(nèi)部定義變量,父組件調(diào)用子組件的show方法,并傳入對(duì)應(yīng)的參數(shù),子組件根據(jù)對(duì)應(yīng)的參數(shù),給自己組件內(nèi)部的變量賦值
這樣做,而不用props,和emit傳值的方法,優(yōu)點(diǎn)是子組件的顯示隱藏都由子組件自己內(nèi)部變量控制,
如果使用props傳值,還要監(jiān)聽父組件傳過(guò)來(lái)的值
子組件show方法
/**
* 對(duì)話框展示,被父組件調(diào)用
* @param visible 對(duì)話框是否可見
* @param title 對(duì)話框的標(biāo)題
* @param buttonText 對(duì)話框底部確認(rèn)按鈕的文本
* @param type 父組件傳過(guò)來(lái)的參數(shù),用來(lái)判斷是新增還是修改
* @param projectName 項(xiàng)目名稱,修改需要用到
* @param parentTableData 父組件的表格數(shù)據(jù),來(lái)做表單驗(yàn)證,判斷是否重名
*/
show(visible, title, buttonText, type, projectName, parentTableData) {
this.visible = visible
this.innerDialogData.title = title
this.innerDialogData.buttonText = buttonText
this.type = type
this.formInDialog.projectName = projectName
this.tableData = parentTableData
},父組件調(diào)用子組件的方法
<el-button type="primary" size="mini" @click="handleDialogShow('add')">新增</el-button>
<el-button type="warning" size="mini" @click="handleDialogShow('modify')">修改</el-button>
/**
* 單擊新增或修改,dialog出現(xiàn)
* @param value 傳過(guò)來(lái)的字符串,來(lái)判斷點(diǎn)的是哪個(gè)
*/
handleDialogShow(value) {
let visible, title, buttonText, type, projectName, parentTableData = this.parentTableData
if (value === 'add') {
visible = true
title = '新建'
buttonText = '新增'
type = 'add'
projectName = ''
} else {
if (this.multipleSelection.length !== 1 || this.multipleSelection.length === 0) {
this.$message.warning('請(qǐng)選擇一個(gè)項(xiàng)目進(jìn)行修改')
} else {
visible = true
title = '修改'
buttonText = '保存'
type = 'modify'
projectName = this.multipleSelection[0].name
}
}
this.$refs.addProjectDialog.show(visible, title, buttonText, type, projectName, parentTableData)
},總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue.js實(shí)現(xiàn)大轉(zhuǎn)盤抽獎(jiǎng)總結(jié)及實(shí)現(xiàn)思路
這篇文章主要介紹了 Vue.js實(shí)現(xiàn)大轉(zhuǎn)盤抽獎(jiǎng)總結(jié)及實(shí)現(xiàn)思路,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Vue報(bào)錯(cuò)"Failed?to?resolve?loader:less-loader"的解決方
這篇文章主要給大家介紹了關(guān)于Vue報(bào)錯(cuò)"Failed?to?resolve?loader:less-loader"的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)同樣遇到這樣問題的朋友具有一定的需要的朋友可以參考下2023-02-02
簡(jiǎn)單實(shí)現(xiàn)Vue的observer和watcher
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Vue的observer和watcher,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Vue.js實(shí)戰(zhàn)之利用vue-router實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面
對(duì)于單頁(yè)應(yīng)用,官方提供了vue-router進(jìn)行路由跳轉(zhuǎn)的處理,這篇文章主要給大家介紹了Vue.js實(shí)戰(zhàn)之利用vue-router實(shí)現(xiàn)跳轉(zhuǎn)頁(yè)面的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-04-04
vue利用Moment插件格式化時(shí)間的實(shí)例代碼
Moment.js 是一個(gè) JavaScript 日期處理類庫(kù),用于解析、檢驗(yàn)、操作、以及顯示日期。這篇文章主要給大家介紹了關(guān)于vue利用Moment插件格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下2021-05-05

