欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

1、匿名插槽

匿名組件相當于一個占位符,將父組件的數據傳入子組件的slot標簽內

父組件:

<template>
  <ChildSlot>父組件調用</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>

運行結果如下:

此時父組件中的“父組件調用”這段內容就傳遞到了子組件,并填入了slot挖的坑當中

2、具名插槽

具名插槽相當于給插槽添加了一個名字(給插槽加入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>

運行結果如下:

此時父組件中的根據slot的name,將內容填入了slot挖的坑當中,一個蘿卜一個坑

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>

運行結果如下:

通過作用域插槽,我們可以將子組件中的值傳入到父組件,在父組件進行數據處理后,填坑到子組件

4、模擬寫一個el-table

先看一個el-table的例子,當需要對一行中的某一個單元格的內容進行處理的時候,需要用到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,實現我們自己的table組件,講解下為什么需要用插槽,用了哪些插槽

4.1為了傳遞table,首先通過匿名插槽,寫一個的組件,目的就是模擬下面這三行內容

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

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

4.2實現el-table-column,通過作用域插槽,寫我們自己的el-table-column

<template>
  <div>
    <div>
      <!--通過傳遞label標簽,展示表頭-->
      <span v-if="label">{{ label }}</span>
    </div>
    <!--獲取主頁面的data值:$parent.$parent.$data.tableList-->
    <div v-for="(user,index) in $parent.$parent.$data.tableList" :key="index">
      <!--當傳遞prop屬性的時候,就取user用戶的數據-->
      <div v-if="prop">{{user[prop]}}</div>
      <!--當不傳遞prop屬性的時候,將用戶的數據通過row屬性,傳遞到父組件當中,也就是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調用my-table,my-table-column

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

<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>

展示結果如下:

以上就是Vue模擬el-table演示插槽用法的示例詳解的詳細內容,更多關于Vue el-table插槽的資料請關注腳本之家其它相關文章!

相關文章

  • vue實現簡單的日歷效果

    vue實現簡單的日歷效果

    這篇文章主要為大家詳細介紹了vue實現簡單的日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • vue實現動態(tài)表格提交參數動態(tài)生成控件的操作

    vue實現動態(tài)表格提交參數動態(tài)生成控件的操作

    這篇文章主要介紹了vue實現動態(tài)表格提交參數動態(tài)生成控件的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue實現拖動左側導航欄變大變小

    vue實現拖動左側導航欄變大變小

    這篇文章主要為大家詳細介紹了vue實現拖動左側導航欄變大變小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue自定義加載指令最新詳解

    vue自定義加載指令最新詳解

    這篇文章主要介紹了vue自定義加載指令的相關知識,主要包括創(chuàng)建加載組件,創(chuàng)建指令的方法,結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 在Vue中實現隨hash改變響應菜單高亮

    在Vue中實現隨hash改變響應菜單高亮

    這篇文章主要介紹了在Vue中實現隨hash改變響應菜單高亮的方法,文中還通過實例代碼給大家介紹了vue關于點擊菜單高亮與組件切換的相關知識,需要的朋友可以參考下
    2020-03-03
  • Vue3使用echarts tree高度自適應支持滾動查看功能

    Vue3使用echarts tree高度自適應支持滾動查看功能

    這篇文章主要介紹了Vue3使用echarts tree高度自適應支持滾動查看功能,文章同通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-06-06
  • Vue利用watch偵聽器模擬實現翻譯功能

    Vue利用watch偵聽器模擬實現翻譯功能

    本期將會介紹 Vue 中的 watch 偵聽器,它語法是怎么樣的呢?具有怎樣的功能呢?最后用模擬實現百度翻譯來更進一步練習 watch 偵聽器,需要的朋友可以參考下
    2024-11-11
  • Vue如何實現分頁功能代碼實例

    Vue如何實現分頁功能代碼實例

    這篇文章主要給大家介紹了關于Vue如何實現分頁功能的相關資料,Vue分頁功能的實現需要前端和后端共同配合完成,文中通過代碼實例介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • vue的滾動條插件實現代碼

    vue的滾動條插件實現代碼

    這篇文章主要介紹了vue的滾動條插件實現代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Vue.js框架路由使用方法實例詳解

    Vue.js框架路由使用方法實例詳解

    這篇文章主要介紹了Vue.js框架路由使用方法實例詳解的相關資料,這里提供實例幫助大家學習理解這部分內容,需要的朋友可以參考下
    2017-08-08

最新評論