vue彈窗嵌入其它vue頁面的操作代碼
說明
【1】實現(xiàn)方式,將其他頁面作為組件傳入
【2】在父頁面,將該組件引入到彈框內,并通過動態(tài)渲染進行切換
子組件,將要引入到彈框內的頁面
<template> <div class="app-container"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> </el-form> <el-table v-loading="loading" :data="recordList" @selection-change="handleSelectionChange"> </el-table> <pagination/> </div> </template> <script> export default { name: "Record", props: ['userId'], data() { return { // 遮罩層 loading: true, title: "", // 查詢參數(shù) queryParams: { userId: null, userName: null } }; }, created() { this.queryParams.userId = this.userId; this.getList(); }, methods: { getList() { this.loading = true; // 執(zhí)行請求后臺數(shù)據(jù) } } }; </script>
【1】構建子頁面,上面是一個普通的頁面,其中頁面使用ElementUI作為布局框架,使用到了el-table表格和pagination分頁組件
【2】組件創(chuàng)建即created的時候,請求后臺加載數(shù)據(jù)。
【3】創(chuàng)建屬性變量props: [‘userId’],該參數(shù)用于父子組件傳值。
父頁面
<template> <div class="app-container"> <el-dialog :title="title" :visible.sync="userDialogVisible" v-if="userDialogVisible" width="800px" append-to-body> <!-- 傳遞給子組件的值 --> <UserInfo :userId="userId"></UserInfo> <div slot="footer" class="dialog-footer"> <el-button @click="cancel()">取 消</el-button> </div> </el-dialog> </div> </template> <script> // 導入需要彈框展示頁面的組件 import UserInfo from '../index/user' export default { name: "父頁面", // 注冊組件 components: {UserInfo}, data() { return { // 需要和彈框頁面交互的參數(shù) userId: null, // 控制彈框是否展示標識 userDialogVisible: false }; }, created() { this.getList(); }, methods: { /** 展示用戶列表頁面 **/ showUserInfoPage(row) { // 設置 this.userDialogVisible = true; this.userId = row.id; }, /** 關閉用戶列表頁面 **/ cancel() { this.userDialogVisible = false; }, } }; </script>
父頁面通過彈框并將子頁面通過引入組件的方式包裹在彈框內,通過:visible.sync=“userDialogVisible” v-if="userDialogVisible"進行彈框的展示以及組件的創(chuàng)建和銷毀,并且通過父子組件傳參的方式切換數(shù)據(jù)。注意這里需要使用v-if以便子組件可以在create()中動態(tài)展示數(shù)據(jù)。
思考
對于類似需要根據(jù)特定參數(shù)動態(tài)展示其他組件數(shù)據(jù)的時候,我們可以通過在可以給子組件傳遞其他參數(shù),在子組件watch中監(jiān)聽。通過子組件監(jiān)聽參數(shù)變量變化從而動態(tài)展切換數(shù)據(jù)。
注意子組件渲染只會執(zhí)行一次created生命周期,如果非要將更改內容寫在created中,就要配合 v-if 使用,將子組件用 v-if 包裹起來,每次都重新加載子組件。
組件 v-if 和 v-show 切換時生命周期鉤子的執(zhí)行
v-if 初始渲染 初始值為 false 組件不會渲染,生命周期鉤子不會執(zhí)行,v-if 的渲染是惰性的。 初始值為 true 時,組件會進行渲染,并依次執(zhí)行 beforeCreate,created,beforeMount,mounted 鉤子。 切換 false => true 依次執(zhí)行 beforeCreate,created,beforeMount,mounted 鉤子。 true => false 依次執(zhí)行 beforeDestroy,destroyed 鉤子。 v-show 渲染 無論初始狀態(tài),組件都會渲染,依次執(zhí)行 beforeCreate,created,beforeMount,mounted 鉤子,v-show 的渲染是非惰性的。 切換 對生命周期鉤子無影響,切換時組件始終保持在 mounted 鉤子```
到此這篇關于vue彈窗如何嵌入其它vue頁面的文章就介紹到這了,更多相關vue彈窗嵌入其它vue頁面內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue3?跨域配置devServer的參數(shù)和設置方法
這篇文章主要介紹了Vue3?跨域配置devServer的參數(shù)和設置,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04vue2.0$nextTick監(jiān)聽數(shù)據(jù)渲染完成之后的回調函數(shù)方法
今天小編就為大家分享一篇vue2.0$nextTick監(jiān)聽數(shù)據(jù)渲染完成之后的回調函數(shù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09