您好,登錄后才能下訂單哦!
今天小編給大家分享一下Vue動態組件表格如何實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
//這里是HTML內容 這里通過下面的引入框架結構把數據源傳到框架中 還有匹配項 <Mytable :configList="configList" :configData="configData"></Mytable> // 引入結構組件 import myCard from "./components/card"; // 注冊組件 components: { myCard }, data() { return { // 這里定義數據列表 configList: [ // 這里是數據有源 { text: "111", img: "/02.jpg", tap: "標簽1", switch: true, button: "按鈕1", }, ], // 這里定義匹配項 configData: [ { table: "貨幣", porp: "text", name: "MyText", }, { table: "圖片", porp: "img", name: "Myimg", }, { table: "標簽", porp: "tap", name: "tag", }, { table: "滑動開關", porp: "switch", name: "Btn", funName: (row) => { this.mySwitch(row); }, }, { table: "按鈕", porp: "button", name: "Mybtn", // 如果組件中需要動態綁定事件 在這里設置 funName: (row) => { this.myBtn(row); }, }, ] } ]
<div> // 這里接受數據組件傳遞過來的數據 <el-table :data="configList"> <!-- 文字表格區間 --> // 這里進行循環渲染數據 <el-table-column align="center" v-for="(item, index) in configData" :key="index" :label="item.table" > <!-- 組件 --> // 動態組件 這里可以進行標簽 按鈕 圖片等 的別的組件進行循環渲染到表格中 <template slot-scope="scope"> <component :is="item.name" :value="scope.row" // 把每一項有點擊事件進行傳參 @parentFun="fun(item.funName, scope.row)" ></component> </template> </el-table-column> </el-table> </div> // 這里引用自己封裝的動態組件 import Myimg from "@/components/toConfigure/img.vue"; import tag from "@/components/toConfigure/tag.vue"; import Btn from "@/components/toConfigure/switch.vue"; import MyText from "@/components/toConfigure/text.vue"; import Mybtn from "@/components/toConfigure/button.vue"; // 進行注冊組件 components: { Myimg, tag, Btn, MyText, Mybtn, }, // 這里進行判斷每個按鈕時候有點擊事件 沒有為空 methods: { fun(funName, row) { if (funName) { funName(row); } }, }, // 這里接受傳過來的數據 props: { configData: { type: Array, }, configList: { type: Array, }, },
<template> // 這里是按鈕 <el-button round @click="btn">{{ value.button }}</el-button> </template> <script> export default { // 接受組件傳過來的值 props: { value: { type: Object, }, }, // 這里進行綁定動態點擊事件 methods: { btn() { // 這里接受傳參 this.$emit("parentFun"); }, }, }; </script> <style></style>
<template> <div> <el-image :src="Myimg" // 使用時候把這條注釋刪除 這個屬性是點擊圖片放大 不需要可以刪除 :preview-src-list="[Myimg]" ></el-image> </div> </template> <script> export default { props: { value: { type: Object, }, }, computed: { Myimg() { if (this.value.img.length > 0) { // "@/assets/images" 這個是圖片的根路徑 加上 傳遞過來的數據中圖片的名字 return require("@/assets/images" + this.value.img); } else { return; } }, }, }; </script> <style></style>
<template> <div> <el-switch v-if="this.value.switch !== undefined" v-model="value.switch" active-color="#13ce66" inactive-color="#ff4949" @change="switchClick" ></el-switch> </div> </template> <script> export default { props: { value: { type: Object, }, }, methods: { switchClick() { // 事件分發 this.$emit("parentFun", this.value); }, }, mounted() { // console.log(this.value.button); }, }; </script> <style></style>
<template> <div> <el-tag v-if="value.tap.length > 0">{{ value.tap }}</el-tag> </div> </template> <script> export default { props: { value: { type: Object, }, }, }; </script> <style></style>
<template> <div> {{ value.text }} </div> </template> <script> export default { props: { value: { type: Object, }, }, }; </script> <style></style>
以上就是“Vue動態組件表格如何實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。