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

Vue.js特性Scoped Slots的淺析

 更新時(shí)間:2019年02月20日 11:33:04   作者:yellman  
這篇文章主要介紹了Vue.js特性Scoped Slots的淺析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

什么是scoped slots

A scoped slot is a special type of slot that functions as a reusable template (that can be passed data to) instead of already-rendered-elements.

上面是官方的定義。

作用域插槽(Scoped Slots)是vue.js中一個(gè)非常有用的特性,它可以使組件更加通用和復(fù)用。唯一的問(wèn)題是理解起來(lái)比較困難。試圖去讓你理解父與子作用域的交織關(guān)系,像解決一道數(shù)學(xué)難題。

簡(jiǎn)單點(diǎn)說(shuō)slot就是插槽,它是可以被替換掉的,替換它的內(nèi)容是可以拿到當(dāng)前組件的上下文的
(為了簡(jiǎn)單起見(jiàn),以下例子以模板為主)

舉個(gè)簡(jiǎn)單的例子

//button.vue
<template>
 <button class="btn">
  <slot></slot> //相當(dāng)于是占位
 </button>
</template>

<script>
export default {

}
</script>
//app.vue
<template>
 <div id="app">
 <Button>Buton with text</Button>
 <Button>
 <i class="fa fa-copy"></i>//這里取代了slot的位置
 </Button>

 <Button>
 <i class="fa fa-user"></i>Profile
 </Button>

 </div>
</template>

<script>
 import Button from './components/Button.vue'
 export default {
 name: 'app',
 components: {
 Button
 }
 }
</script>

slot其實(shí)就是一個(gè)占位,button.vue的slot位置會(huì)被app.vue里面的替換了。

復(fù)雜例子1:slot內(nèi)的東西可以獲取父組件的上下文信息

//list.vue
<template>
 <div>
 <slot v-for="item in items"
   :item="item">//這里是slot的占位
 </slot> 
 </div>
</template>
//app.vue
<template>
 <div id="app">
 <List :items="listItems">
  <div slot-scope="row"
  class="list-item1">//這里可以獲取到item,item原本是屬于List組件內(nèi)部的。也就是說(shuō)slot獲取了父組件的上下文。
  {{row.item.text}}
 </div>
 </List>
 </div>
</template>

解釋見(jiàn)上面代碼注釋。注意一點(diǎn)的是slot-scope=”row” 這里的名字(row)是可以任意取的。

named slots

可以直接放到普通標(biāo)簽上面,可以放template標(biāo)簽上

slot里面的作用域是普通標(biāo)簽或者template是一致的。不能訪問(wèn)父組件的作用域。

復(fù)雜例子2:slot里面是可以放東西的,是默認(rèn)的模板,可被替換。

//table.vue
<template>
 <table class="table">
 <thead>
  <slot name="columns">//這里定義了一個(gè)slot,名字叫columns,也就是說(shuō)這里的內(nèi)容是可以被替換掉的
  <th v-for="column in columns">
   {{column}}
  </th>
  </slot>
 </thead>
 <tbody>
 <tr v-for="item in data">
  <slot :row="item">//這里slot有一個(gè)prop是row
  <td v-for="column in columns"
   v-if="hasValue(item, column)">
   {{itemValue(item, column)}}
  </td>
  </slot>
 </tr>
 </tbody>
 </table>
</template>
//app.vue
<template>
 <div id="app">
 <CustomTable :data="tableData" 
   :columns="tableColumns">
 </CustomTable>

  <div class="table-separator"></div>

 <CustomTable :data="tableData">
  <template slot="columns">//這里有一個(gè)slot="columns",意思是替換table.vue里面名字叫columns的slot
  <th>Title</th>
  <th>
  <i class="fa fa-images"></i> Image
  </th>
  <th class="actions-row">
  <i class="fab fa-vuejs vue-icon"></i> Actions
  </th>
 </template>

 <template slot-scope="{row}">//這里替換table.vue里面slot為row的內(nèi)部?jī)?nèi)容
 <td class="bold-row">
  {{row.title}}
 </td>
 <td class="img-row">
  <img :src="row.img">
 </td>
 <td class="actions-row">
  <Button @click.native="handleAction('Edit')">
  <i class="fa fa-edit"></i>
  </Button>
  <Button @click.native="handleAction('Delete')" type="danger">
  <i class="fa fa-trash"></i>
  </Button>
 </td>
 </template> 
 </CustomTable>
 </div>
</template>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3 emits結(jié)合回調(diào)函數(shù)的使用方式

    Vue3 emits結(jié)合回調(diào)函數(shù)的使用方式

    文章介紹了回調(diào)函數(shù)的概念,并通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明其工作原理,接著,文章提到在Vue.js中,回調(diào)函數(shù)常用于子父組件之間的通信,父組件可以接受子組件的消息并調(diào)用回調(diào)函數(shù),文章通過(guò)代碼示例和解釋,幫助讀者理解回調(diào)函數(shù)在實(shí)際開(kāi)發(fā)中的應(yīng)用
    2024-12-12
  • Vue實(shí)現(xiàn)仿iPhone懸浮球的示例代碼

    Vue實(shí)現(xiàn)仿iPhone懸浮球的示例代碼

    這篇文章主要介紹了Vue實(shí)現(xiàn)仿iPhone懸浮球的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue3?使用provide?inject父子組件傳值失敗且子組件不響應(yīng)

    vue3?使用provide?inject父子組件傳值失敗且子組件不響應(yīng)

    這篇文章主要介紹了vue3使用provide?inject父子組件傳值傳不過(guò)去且傳遞后子組件不具備響應(yīng)性問(wèn)題解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Vue中在data里面調(diào)用method方法的實(shí)現(xiàn)

    Vue中在data里面調(diào)用method方法的實(shí)現(xiàn)

    這篇文章主要介紹了Vue中在data里面調(diào)用method方法的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue3?emits事件使用示例詳解

    vue3?emits事件使用示例詳解

    這篇文章主要為大家介紹了vue3?emits事件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • vue使用prop可以渲染但是打印臺(tái)報(bào)錯(cuò)的解決方式

    vue使用prop可以渲染但是打印臺(tái)報(bào)錯(cuò)的解決方式

    今天小編就為大家分享一篇vue使用prop可以渲染但是打印臺(tái)報(bào)錯(cuò)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 簡(jiǎn)單實(shí)現(xiàn)vue中的依賴(lài)收集與響應(yīng)的方法

    簡(jiǎn)單實(shí)現(xiàn)vue中的依賴(lài)收集與響應(yīng)的方法

    這篇文章主要介紹了簡(jiǎn)單實(shí)現(xiàn)vue中的依賴(lài)收集與響應(yīng)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • vue 自定義右鍵樣式的實(shí)例代碼

    vue 自定義右鍵樣式的實(shí)例代碼

    這篇文章主要介紹了vue 自定義右鍵樣式的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • vue usePop彈窗控制器的實(shí)現(xiàn)

    vue usePop彈窗控制器的實(shí)現(xiàn)

    本文主要介紹了vue usePop彈窗控制器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 前端自動(dòng)化測(cè)試Vue中TDD和單元測(cè)試示例詳解

    前端自動(dòng)化測(cè)試Vue中TDD和單元測(cè)試示例詳解

    這篇文章主要為大家介紹了前端自動(dòng)化測(cè)試Vue中TDD和單元測(cè)試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

太保市| 布尔津县| 浑源县| 伊川县| 舟山市| 宁德市| 新竹市| 大宁县| 临海市| 南部县| 延长县| 土默特左旗| 鹤庆县| 大埔县| 秦皇岛市| 澎湖县| 比如县| 高雄县| 永年县| 凤庆县| 静宁县| 澄城县| 五峰| 彩票| 黄山市| 昭平县| 伊宁县| 徐州市| 长治县| 大方县| 南京市| 樟树市| 当阳市| 霍山县| 同江市| 临夏县| 大悟县| 岳阳县| 墨江| 大港区| 鄯善县|