您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“vue中slot分發內容的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“vue中slot分發內容的示例分析”這篇文章吧。
組件模板-元素可以用一個特殊的屬性 name 來配置如何分發內容。多個 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分發內容 v-for遍歷--> <panel2 v-for="item in list"> <h3 slot="title">{{item.title}}</h3> <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>
//組件 <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>
//組件 <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>
//組件 <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">改變動態插槽</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中slot分發內容的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。