vue實現(xiàn)彈出框內(nèi)嵌頁面展示并添加tab切換展示實時加載
最近做業(yè)務(wù)的時候,發(fā)現(xiàn)產(chǎn)品的原型圖上有一個彈出框,上面包含了兩個窗口要進行切換。

每個窗口都有分頁列表展示、搜索、添加和刪除,感覺就是兩個完整的頁面,如果全寫在一個頁面會很麻煩,還可能會出現(xiàn)一系列的問題,后期改起來比較麻煩,所以我就準(zhǔn)備分開來寫這個窗口,先寫兩個頁面,最后看能不能嵌入到彈出框里。
這里插入一下vue的頁面跳轉(zhuǎn)方法,點擊按鈕直接跳轉(zhuǎn)到另一個頁面,這樣可以先調(diào)整單個頁面的樣式和功能。
<el-table-column label="字典類型" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<router-link :to="'/system/dict-data/index/' + scope.row.dictId" class="link-type">
<span>{{ scope.row.dictType }}</span>
</router-link>
</template>
</el-table-column>
參數(shù)獲?。?/p>
created() {
const dictId = this.$route.params && this.$route.params.dictId;
this.getType(dictId);
this.getTypeList();
},
而且這塊跳轉(zhuǎn)的頁面也是需要配置路由的,要不然頁面就會404:
{
path: '/system/dict-data',
component: Layout,
hidden: true,
permissions: ['system:dict:list'],
children: [
{
path: 'index/:dictId(\\d+)',
component: () => import('@/views/system/dict/data'),
name: 'Data',
meta: { title: '字典數(shù)據(jù)', activeMenu: '/system/dict' }
}
]
},
當(dāng)兩個頁面的功能都實現(xiàn)好了之后,開始在主頁面添加彈出框,實現(xiàn)內(nèi)嵌頁面。

- 屬性變量props: [‘agentId’],該參數(shù)用于父子組件傳值
- 組件創(chuàng)建即created的時候,賦值請求后臺加載數(shù)據(jù)
在父頁面中引入子頁面:

添加彈出框,內(nèi)嵌子頁面
<el-dialog :title="filterTitle" :visible.sync="filterDialogVisible" v-if="filterDialogVisible" width="1100px"
append-to-body>
<el-tabs v-model="filterTabValue" type="border-card" :lazy="true" @tab-click="filterTabClick">
<el-tab-pane label="內(nèi)容1" name="hotel">
<!-- 酒店過濾頁面 -->
<HotelFilter :agentId="agentId" v-if="isHotel"></HotelFilter>
</el-tab-pane>
<el-tab-pane label="內(nèi)容2" name="keyword">
<Keyword :agentId="agentId" v-if="isKeyword"></Keyword>
</el-tab-pane>
</el-tabs>
</el-dialog>
父頁面通過彈框并將子頁面通過引入組件的方式包裹在彈框內(nèi),通過:visible.sync=“filterDialogVisible” v-if="filterDialogVisible"進行彈框的展示以及組件的創(chuàng)建和銷毀,并且通過父子組件傳參的方式切換數(shù)據(jù)。注意這里需要使用v-if以便子組件可以在create()中動態(tài)展示數(shù)據(jù)。
同理,tabs切換也是通過v-if來控制動態(tài)渲染頁面。
//設(shè)置頁面
filterRuleAdd(row) {
this.agentId = row.agentId;
this.filterDialogVisible = true;
this.filterTitle = "渠道名稱:" + row.agentName;
this.filterTabValue = "hotel";
this.isHotel = true;
},
//禁用配置切換
filterTabClick() {
if (this.filterTabValue == "hotel") {
this.isHotel = true;
this.isKeyword = false;
} else if (this.filterTabValue == "keyword") {
this.isKeyword = true;
this.isHotel = false;
}
},
參考文檔:http://www.dbjr.com.cn/article/267510.htm
總結(jié)
到此這篇關(guān)于vue實現(xiàn)彈出框內(nèi)嵌頁面展示并添加tab切換展示實時加載的文章就介紹到這了,更多相關(guān)vue彈出框添加tab切換實時加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue組件vue-treeselect箭頭和叉圖標(biāo)變大問題及解決
這篇文章主要介紹了vue組件vue-treeselect箭頭和叉圖標(biāo)變大問題及解決方案,具有很好的參考價值,希望對大家有所幫助。2022-07-07
vue2.0結(jié)合DataTable插件實現(xiàn)表格動態(tài)刷新的方法詳解
這篇文章主要介紹了vue2.0結(jié)合DataTable插件實現(xiàn)表格動態(tài)刷新的方法,結(jié)合具體項目實例形式分析了vue2.0結(jié)合DataTable插件實現(xiàn)表格動態(tài)刷新過程中遇到的問題與相應(yīng)的解決方法,需要的朋友可以參考下2017-03-03
vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼
這篇文章主要介紹了vue使用showdown并實現(xiàn)代碼區(qū)域高亮的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
詳解vue中在循環(huán)中使用@mouseenter 和 @mouseleave事件閃爍問題解決方法
這篇文章主要介紹了詳解vue中在循環(huán)中使用@mouseenter 和 @mouseleave事件閃爍問題解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
vue+element UI實現(xiàn)樹形表格帶復(fù)選框的示例代碼
這篇文章主要介紹了vue+element UI實現(xiàn)樹形表格帶復(fù)選框的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
element?table數(shù)據(jù)量太大導(dǎo)致網(wǎng)頁卡死崩潰的解決辦法
當(dāng)頁面數(shù)據(jù)過多,前端渲染大量的DOM時,會造成頁面卡死問題,下面這篇文章主要給大家介紹了關(guān)于element?table數(shù)據(jù)量太大導(dǎo)致網(wǎng)頁卡死崩潰的解決辦法,需要的朋友可以參考下2023-02-02
vue-cli3使用mock數(shù)據(jù)的方法分析
這篇文章主要介紹了vue-cli3使用mock數(shù)據(jù)的方法,結(jié)合實例形式分析了vue-cli3使用mock數(shù)據(jù)的相關(guān)實現(xiàn)方法與操作注意事項,需要的朋友可以參考下2020-03-03

