<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了Vue基於Element-ui實現表格彈窗元件的具體程式碼,供大家參考,具體內容如下
效果圖
acTable1 () { this.$modalTable({ title: "表格一", tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀區金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀區金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀區金沙江路 1516 弄' }], tableColumn: [ { prop: "date", label: "日期", width: "180" }, { prop: "name", label: "姓名", }, { prop: "address", label: "地址", } ] }) }, acTable2 () { this.$modalTable({ title: "表格二", tableData: [], tableColumn: [ { prop: "date", label: "日期", width: "180" }, { prop: "name", label: "姓名", }, { prop: "address", label: "地址", } ] }) }, acTable3 () { this.$modalTable({ title: "表格三", tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀區金沙江路 1517 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀區金沙江路 1519 弄' }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀區金沙江路 1516 弄' }], tableColumn: [ { prop: "name", label: "姓名", }, { prop: "date", label: "日期", }, { prop: "address", label: "地址", } ] }) },
1、建立modalTable.vue檔案
將變數放在data中,正常開發即可,後續會通過別的方式將資料傳入元件data中。
<template> <el-dialog ref="dialog" :title="title" :visible.sync="visible" width="30%" :before-close="beforeClose"> <el-table :data="tableData" style="width: 100%"> <el-table-column v-for="(item,index) in tableColumn" :key="index" :prop="item.prop" :label="item.label" :width="item.width"> </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="closeDialog">關閉</el-button> </span> </el-dialog> </template> <script> export default { data () { return { visible: false, vmId: 0, title: "標題", tableData: [], tableColumn: [] }; }, methods: { beforeClose (done) { this.visible = false // 從DOM裡將這個元件移除 // visible只是控制了顯示與隱藏 但是dom結構中還是存在元件 為了避免消耗記憶體必須銷燬元件 // setTimeout(() => { // console.log("this.$el.parentNode", this.$el.parentNode) // console.log("this.$el", this.$el) // this.$el.parentNode.removeChild(this.$el) // }, 500) setTimeout(() => { if (typeof this.onClose === "function") { this.onClose(this.vmId) done() } }, 500); }, closeDialog () { this.$refs.dialog.handleClose() } } }; </script> <style lang="less" scoped> </style>
2、建立modalTable.js檔案
在元件中沒有props
接收引數,那麼如何給modalTable
元件傳參,這就需要一個modalTable.js
檔案去管理modalTable.vue
元件。
import Vue from "vue"; const constructor = Vue.extend(require('./modalTable.vue').default) let nId = 1 let instances = [] const ModalTable = (options) => { let id = 'table-' + nId++; options = options || {}; console.log("options", options); // 重點:繫結關閉事件 options.onClose = function (vmId) { ModalTable.close(vmId) } // 實列化 const instance = new constructor({ //重點:在這裡將你傳過來的引數匹配到modalTable.vue元件的data data: { ...options, vmId: id } }) console.log("instance", instance); instance.id = id; instance.$mount(); // 掛載但是並未插入dom,是一個完整的Vue範例 document.body.appendChild(instance.$el) // 將dom插入body instance.visible = true //這裡修改modalTable.vue資料中的visible,這樣modalTable元件就顯示出來 instances.push(instance) return instance }; ModalTable.close = function (vmId) { console.log("vmId", vmId) instances.forEach((instance, index) => { if (instance.id == vmId) { document.body.removeChild(instances[index].$el) instances.splice(index, 1) } }) } ModalTable.closeAll = function () { for (let i = instances.length - 1; i >= 0; i--) { instances[i].close() } } export default ModalTable;
3、在main.js檔案中掛載vue原型鏈
import ModalTable from './components/modalTable/modalTable.js' Vue.prototype.$modalTable = ModalTable;
4、使用
最後就可以如上文的使用方法,通過原型鏈呼叫ModalTable
元件了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45