關于vue 的slot分發(fā)內容 (多個分發(fā))
更新時間:2022年03月29日 16:58:03 作者:黑色咖啡 Ken
這篇文章主要介紹了關于vue 的slot分發(fā)內容 (多個分發(fā)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
slot分發(fā)內容 (多個分發(fā))
組件模板-元素可以用一個特殊的屬性 name 來配置如何分發(fā)內容。多個 slot 可以有不同的名字。具名 slot 將匹配內容片段中有對應 slot 特性的元素
<style media="screen"> ? ? .panel{ ? ? ? margin:10px;width:150px; ? ? ? border:1px solid #ccc ? ? } ? ? .panel-header,.panel-bottom{ ? ? ? height: 20px; ? ? ? background-color:antiquewhite; ? ? } ? ? .panel-body{ ? ? ? min-height: 50px; ? ? } ? </style>
<div class="app"> ? ? <!--多個slot分發(fā)內容 v-for遍歷--> ? ? ?<panel2 v-for="item in list"> ? ? ? ?<h2 slot="title">{{item.title}}</h2> ? ? ? ?<p slot="desc">{{item.desc}}</p> ? ? ? ?<span slot="tims">{{item.tims}}</span> ? ? ?</panel2> ? </div>
<!--組件模板--> <script type="text/x-Template" id="panelTpl"> <div class="panel"> <div class="panel-header"><slot name="title"></slot></div> <div class="panel-body"> <slot name="desc"></slot> </div> <div class="panel-bottom"><slot name="tims"></slot></div> </div> </script>
<script type="text/javascript"> var panelTpl={ template:'#panelTpl' } var vm=new Vue({ el:'.app', components:{//注冊組件 "panel2":panelTpl }, data:{ list:[ {title:'新聞一標題',desc:'一的描述',tims:'2018-07-19'}, {title:'新聞二標題',desc:'二的描述',tims:'2018-07-18'}, {title:'新聞三標題',desc:'三的描述',tims:'2018-07-17'} ] } }); </script>
slot的多種用法
基本用法
//組件 <template> <div class="com"> <slot name="header"></slot> <slot>如果沒有插槽或者不具名就是顯示當前</slot> <slot name="floot"></slot> </div> </template> <script> export default { } </script> //使用 <template> <div id="app"> <com> <div class="header" slot="header"> 我將會插入到名為header的插槽當中 </div> <div class="floot" slot="floot"> 我將會插入到名為floot的插槽當中 </div> </com> </div> </template> <script> import com from '@/components/com.vue'; export default { name:"App", components:{ com } } </script>
插槽中使用data
//組件 <template> <div class="com"> <slot name="header" :slotData="comData"></slot>//slotData表示插槽key值 <slot>如果沒有插槽或者不具名就是顯示當前</slot> <slot name="floot" :slotData="comData"></slot> </div> </template> <script> export default { data() { return { comData:{ header:"我將會插入到名為header的插槽當中", floot:"我將會插入到名為floot的插槽當中" } } }, } </script> //使用 <template> <div id="app"> <com> <template v-slot:header="{slotData}"> //必須使用template包裹,v-slot后面跟著的是插槽名,slotData插槽里表示的key值 <div class="header"> {{slotData.header}} </div> </template> <template v-slot:floot="{slotData}"> <div class="floot"> {{slotData.floot}} </div> </template> </com> </div> </template> <script> import com from '@/components/com.vue'; export default { name:"App", components:{ com } } </script>
動態(tài)插槽
//組件 <template> <div class="com"> <slot name="header" :slotData="comData"></slot> <slot name="body" :slotData="comData"></slot> <slot name="floot"></slot> </div> </template> <script> export default { data() { return { comData:{ header:"我將會插入到名為header的插槽當中", body:"我將會插入到名為body的插槽當中" } } }, } </script> //使用 <template> <div id="app"> <com> <template v-slot:[slotName]="{slotData}"> <div class="slot"> {{slotData[slotName]}} </div> </template> <div class="floot" slot="floot"> <button @click="changeSlotName">改變動態(tài)插槽</button> </div> </com> </div> </template> <script> import com from '@/components/com.vue'; export default { name:"App", components:{ com }, data(){ return{ slotName:"header" } }, methods: { changeSlotName(){ this.slotName = this.slotName === "header" ? "body" : "header"; } } } </script>
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解Vue 中 extend 、component 、mixins 、extends 的區(qū)別
這篇文章主要介紹了Vue 中 extend 、component 、mixins 、extends 的區(qū)別,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-12-12vue3中element-plus?icon圖標的正確使用姿勢
element-plus官方提示,Icon圖標正在向SVG?Icon遷移,之前使用的Font?Icon即將被棄用,下面這篇文章主要給大家介紹了關于vue3中element-plus?icon圖標的正確使用姿勢,需要的朋友可以參考下2022-03-03Vue使用JSEncrypt實現(xiàn)rsa加密及掛載方法
這篇文章主要介紹了Vue使用JSEncrypt實現(xiàn)rsa加密及掛載方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02