最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue模擬el-table演示插槽用法的示例詳解

 更新時(shí)間:2023年05月30日 11:28:00   作者:Java大師-  
很多人知道插槽分為三種,但是實(shí)際到elementui當(dāng)中為什么這么用,就一臉懵逼,接下來(lái)就跟大家聊一聊插槽在elementui中的應(yīng)用,并且自己寫(xiě)一個(gè)類似el-table的組件,感興趣的可以了解一下

vue的slot分為三種::匿名插槽,具名插槽, 作用域插槽,主要作用:讓父組件可以向子組件指定位置插入 html 結(jié)構(gòu),也是一種組件間通信的方式,適用于父組件=>子組件

1、匿名插槽

匿名組件相當(dāng)于一個(gè)占位符,將父組件的數(shù)據(jù)傳入子組件的slot標(biāo)簽內(nèi)

父組件:

<template>
  <ChildSlot>父組件調(diào)用</ChildSlot>
</template>
<script>
import ChildSlot from "@/components/ChildSlot";
export default {
  components:{
    ChildSlot
  }
}
</script>

子組件:

<template>
  <h1>我是子組件</h1>
  <slot></slot>
</template>
<script>
export default {
  name: "ChildSlot"
}
</script>

運(yùn)行結(jié)果如下:

此時(shí)父組件中的“父組件調(diào)用”這段內(nèi)容就傳遞到了子組件,并填入了slot挖的坑當(dāng)中

2、具名插槽

具名插槽相當(dāng)于給插槽添加了一個(gè)名字(給插槽加入name屬性就是具名插槽)

父組件:

<template>
    <child-slot>
      <template v-slot:username>我是父組件傳遞的用戶姓名</template>
    </child-slot>
    <child-slot>
      <template v-slot:age>我是父組件傳遞的年齡</template>
    </child-slot>
</template>
<script>
import ChildSlot from "@/components/ChildSlot";
export default {
  components:{
    ChildSlot
  }
}
</script>

子組件:

<template>
  <h1>我是子組件</h1>
  <slot name="username"></slot>
  <slot name="age"></slot>
</template>
<script>
export default {
  name: "ChildSlot"
}
</script>

運(yùn)行結(jié)果如下:

此時(shí)父組件中的根據(jù)slot的name,將內(nèi)容填入了slot挖的坑當(dāng)中,一個(gè)蘿卜一個(gè)坑

3、作用域插槽

與前兩者的不同 slot自定義:name="值" 子組件可向父組件傳遞信息

父組件:

<template>
    <child-slot>
      <template v-slot="{username}">我是子組件傳遞的用戶姓名:{{username}}</template>
    </child-slot>
</template>
<script>
import ChildSlot from "@/components/ChildSlot";
export default {
  components:{
    ChildSlot
  }
}
</script>

子組件:

<template>
  <h1>我是子組件</h1>
  <slot :username="username"></slot>
</template>
<script>
export default {
  name: "ChildSlot",
  data(){
    return{
        username:'java',
    }
  }
}
</script>

運(yùn)行結(jié)果如下:

通過(guò)作用域插槽,我們可以將子組件中的值傳入到父組件,在父組件進(jìn)行數(shù)據(jù)處理后,填坑到子組件

4、模擬寫(xiě)一個(gè)el-table

先看一個(gè)el-table的例子,當(dāng)需要對(duì)一行中的某一個(gè)單元格的內(nèi)容進(jìn)行處理的時(shí)候,需要用到slot插槽,例如下面的姓名name的處理

<template>
  <el-table
      :data="tableData"
      style="width: 100%">
    <el-table-column
        label="姓名"
        width="180">
        <template slot-scope="scope">
          <el-popover trigger="hover" placement="top">
            <p>姓名: {{ scope.row.name }}</p>
            <p>住址: {{ scope.row.address }}</p>
            <div slot="reference" class="name-wrapper">
              <el-tag size="medium">{{ scope.row.name }}</el-tag>
            </div>
          </el-popover>
        </template>
    </el-table-column>
    <el-table-column
        prop="address"
        label="地址">
    </el-table-column>
  </el-table>
</template>

參照el-table,實(shí)現(xiàn)我們自己的table組件,講解下為什么需要用插槽,用了哪些插槽

4.1為了傳遞table,首先通過(guò)匿名插槽,寫(xiě)一個(gè)的組件,目的就是模擬下面這三行內(nèi)容

? <el-table
? :data="tableData"
? style="width: 100%">

<template>
  <div>
      <slot></slot>
  </div>
</template>
<script>
export default {
  name: "MyTable"
}
</script>

4.2實(shí)現(xiàn)el-table-column,通過(guò)作用域插槽,寫(xiě)我們自己的el-table-column

<template>
  <div>
    <div>
      <!--通過(guò)傳遞label標(biāo)簽,展示表頭-->
      <span v-if="label">{{ label }}</span>
    </div>
    <!--獲取主頁(yè)面的data值:$parent.$parent.$data.tableList-->
    <div v-for="(user,index) in $parent.$parent.$data.tableList" :key="index">
      <!--當(dāng)傳遞prop屬性的時(shí)候,就取user用戶的數(shù)據(jù)-->
      <div v-if="prop">{{user[prop]}}</div>
      <!--當(dāng)不傳遞prop屬性的時(shí)候,將用戶的數(shù)據(jù)通過(guò)row屬性,傳遞到父組件當(dāng)中,也就是app.vue-->
      <slot v-else :row="user"></slot>
    </div>
  </div>
</template>
<script>
export default {
  name: "MyTableColumn",
  props: {
    prop: {type: String},
    label: {type: String}
  }
}
</script>

4.3調(diào)用my-table,my-table-column

我們通過(guò)my-table標(biāo)簽,將內(nèi)容my-table和my-table-column放置到my-table的匿名插槽中,并通過(guò)子組件的props屬性,接收prop和label。如同elementui一樣,如果prop為空,子附件將父組件的user通過(guò)作用域插槽傳遞到父組件,并在父組件進(jìn)行處理

<template>
  <div>
    <my-table :data="tableList" style="display: flex; flex-direction: row;">
      <my-table-column prop="name" label="姓名"></my-table-column>
      <my-table-column prop="sex" label="性別"></my-table-column>
      <my-table-column label="地址">
        <template v-slot="scope">
          <span style="background-color: deepskyblue">{{scope.row.address}}</span>
        </template>
      </my-table-column>
    </my-table>
  </div>
</template>
<script>
import MyTable from "@/components/MyTable";
import MyTableColumn from "@/components/MyTableColumn";
export default {
  name: 'App',
  components:{
    MyTableColumn,
    MyTable
  },
  data(){
    return{
      tableList:[
        {
          name: 'java大師1',
          sex: '男',
          address: '西藏1'
        },
        {
          name: 'java大師2',
          sex: '男',
          address: '西藏2'
        },
        {
          name: 'java大師3',
          sex: '男',
          address: '西藏3'
        },
        {
          name: 'java大師4',
          sex: '男',
          address: '西藏4'
        }
      ]
    }
  }
}
</script>

展示結(jié)果如下:

以上就是Vue模擬el-table演示插槽用法的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue el-table插槽的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue?mounted周期中document.querySelectorAll()獲取不到元素的解決

    vue?mounted周期中document.querySelectorAll()獲取不到元素的解決

    這篇文章主要介紹了vue?mounted周期中document.querySelectorAll()獲取不到元素的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue組件和Route的生命周期實(shí)例詳解

    Vue組件和Route的生命周期實(shí)例詳解

    這篇文章主要介紹了Vue組件和Route的生命周期的相關(guān)知識(shí),需要的朋友可以參考下
    2018-02-02
  • 解決vue項(xiàng)目中遇到 Cannot find module ‘chalk‘ 報(bào)錯(cuò)的問(wèn)題

    解決vue項(xiàng)目中遇到 Cannot find module ‘chalk‘ 報(bào)錯(cuò)的問(wèn)題

    這篇文章主要介紹了解決vue項(xiàng)目中遇到 Cannot find module ‘chalk‘ 報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 解決Vue+SpringBoot+Shiro跨域問(wèn)題

    解決Vue+SpringBoot+Shiro跨域問(wèn)題

    本文將結(jié)合實(shí)例代碼,解決Vue+SpringBoot+Shiro跨域問(wèn)題,相信大家剛開(kāi)始做都會(huì)遇到這個(gè)問(wèn)題,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • Vue3封裝localStorage基本使用示例詳解

    Vue3封裝localStorage基本使用示例詳解

    localStorage 和 sessionStorage 屬性允許在瀏覽器中存儲(chǔ) key/value 對(duì)的數(shù)據(jù),localStorage 用于長(zhǎng)久保存整個(gè)網(wǎng)站的數(shù)據(jù),保存的數(shù)據(jù)沒(méi)有過(guò)期時(shí)間,直到手動(dòng)去刪除,本文給大家介紹Vue3封裝localStorage-基本使用,感興趣的朋友一起看看吧
    2023-12-12
  • 詳解Vue SPA項(xiàng)目?jī)?yōu)化小記

    詳解Vue SPA項(xiàng)目?jī)?yōu)化小記

    這篇文章主要介紹了詳解Vue SPA項(xiàng)目?jī)?yōu)化小記,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Vue中動(dòng)態(tài)class的多種寫(xiě)法

    Vue中動(dòng)態(tài)class的多種寫(xiě)法

    這篇文章主要介紹了Vue之動(dòng)態(tài)class的幾種寫(xiě)法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Vue項(xiàng)目判斷開(kāi)發(fā)、測(cè)試、正式環(huán)境過(guò)程

    Vue項(xiàng)目判斷開(kāi)發(fā)、測(cè)試、正式環(huán)境過(guò)程

    這篇文章主要介紹了Vue項(xiàng)目判斷開(kāi)發(fā)、測(cè)試、正式環(huán)境過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue頁(yè)面如何及時(shí)更新頁(yè)面數(shù)據(jù)問(wèn)題

    vue頁(yè)面如何及時(shí)更新頁(yè)面數(shù)據(jù)問(wèn)題

    這篇文章主要介紹了vue頁(yè)面如何及時(shí)更新頁(yè)面數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue3?關(guān)于reactive的重置問(wèn)題及解決

    vue3?關(guān)于reactive的重置問(wèn)題及解決

    這篇文章主要介紹了vue3?關(guān)于reactive的重置問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

昌邑市| 晋中市| 米林县| 剑川县| 庆元县| 曲阜市| 岗巴县| 白玉县| 荣昌县| 正镶白旗| 龙泉市| 盐城市| 镇巴县| 普陀区| 龙口市| 甘洛县| 灵石县| 当涂县| 临桂县| 思南县| 吴旗县| 新乐市| 泊头市| 沁阳市| 万宁市| 泌阳县| 大庆市| 拉萨市| 久治县| 东丽区| 五家渠市| 丰宁| 梁山县| 库伦旗| 介休市| 固原市| 读书| 遵化市| 昌吉市| 揭阳市| 彭泽县|