Vuejs進階知識(十九)【slot】
作為對Component
的補充,Vuejs 增加了 Slot
這個功能.
普通的Slot
我們從具體的例子來說明。
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
<div id='app'>
<study-process>
我學習到了Slot 這個章節。
</study-process>
</div>
<script>
Vue.component('study-process', {
data: function () {
return {
count: 0
}
},
template: '<div><slot></slot></div>'
})
var app = new Vue({
el: '#app',
data: {
}
})
</script>
</body>
</html>
從上面的程式碼從,我們可以看到,我們先是定義了一個 component
:
Vue.component('study-process', {
data: function () {
return {
count: 0
}
},
template: '<div><slot></slot></div>'
})
在這個component
的template
中,是這樣的:
template: '<div><slot></slot></div>'
這裡就使我們定義的 slot
.
然後,我們在呼叫這個 component
的時候,這樣:
<study-process>
我學習到了Slot 這個章節。
</study-process>
所以,“我學習到了Slot 這個章節。
”就好像一個引數那樣傳入到了 component
中, component
發現自身已經定義了 slot
, 就會把這個字串放到slot
的位置,然後顯示出來。
如下圖所示:
named slot
也就是帶有名字的slot
.
很多時候我們可能需要多個slot
. 看下面的例子:
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
</head>
<body>
<div id='app'>
<study-process>
<p slot='slot_top'>
Vuejs 比起別的框架真的簡潔好多!
</p>
我學習到了 Slot 這個章節。
<h5 slot='slot_bottom'>
再也不怕H5 專案了~
</h5>
</study-process>
</div>
<script>
Vue.component('study-process', {
template: '<div>' +
'<slot name="slot_top"></slot>' +
'<slot></slot>' +
'<slot name="slot_bottom"></slot>' +
'</div>'
})
var app = new Vue({
el: '#app',
data: {
}
})
</script>
</body>
</html>
上面的程式碼中, 我們定義了這樣的 component
:
Vue.component('study-process', {
template: '<div>' +
'<slot name="slot_top"></slot>' +
'<slot></slot>' +
'<slot name="slot_bottom"></slot>' +
'</div>'
})
其中的 <slot name="slot_top"></slot>
就是一個named slot
(具備名字的slot
) ,這樣,在後面對於 component
的呼叫中:
<p slot='slot_top'>
Vuejs 比起別的框架真的簡潔好多!
</p>
就會渲染在對應的位置了。
slot
的預設值
我們可以為 slot 加上預設值。這樣當 “父頁面” 沒有指定某個slot
的時候,就會顯示這個預設值了。
例如:
<slot name="slot_top">這裡 top slot的預設值 </slot>
相關文章
- Vuejs進階知識(十八)【component 進階知識】VueJS
- Vuejs進階知識(十六)【mixin】VueJS
- Vuejs進階知識(十七)【computed properties】VueJS
- Vuejs進階知識(二十四)【自定義Directive】VueJS
- Vuejs進階知識(二十一)【生命週期,最佳實踐】VueJS
- Vuejs進階知識(二十三)【與CSS前處理器結合使用】VueJSCSS
- js 進階知識JS
- Vuejs基本知識(九)【路由】VueJS路由
- Android進階知識:ThreadLocalAndroidthread
- 前端進階知識彙總前端
- Redis進階知識一覽Redis
- Vuejs基本知識(十)【使用樣式】VueJS
- Android進階知識:Handler相關Android
- Android知識進階樹——Window & ViewRootImplAndroidView
- Vuejs基本知識(十三)【表單的提交】VueJS
- 前端進階必備知識彙總前端
- AcWing 進階課知識點模板梳理
- Vuejs基本知識(四)【頁面渲染過程 】VueJS
- Vuejs基本知識(五)【檢視中的渲染】VueJS
- Vuejs基本知識(十二)【表單的繫結】VueJS
- Java-100天知識進階-JVM記憶體-知識鋪(三)JavaJVM記憶體
- 前端進階必須懂得TCP/IP知識前端TCP
- 前端進階-個人筆記-小知識前端筆記
- 《MySQL 進階篇》十九:事務日誌MySql
- Vuejs基本知識(三)【語法簡寫說明】VueJS
- Vue進階知識(一)------專案初始化Vue
- Docker知識進階與容器編排技術Docker
- 直播美顏SDK的人臉識別技術進階知識
- vuejs基礎玩法(基礎知識,不喜勿噴!)VueJS
- Android知識進階樹——RemoteViews使用和原理詳解AndroidREMView
- JavaScript進階知識點——函式和物件詳解JavaScript函式物件
- 一些常用的 Git 進階知識與技巧Git
- Java 從入門到進階之路(二十九)Java
- Vuejs基本知識(一)【專案資料夾基本結構】VueJS
- Vuejs基本知識(八)【頁面間的引數傳遞】VueJS
- JavaEE進階知識學習-----SpringCloud(二)實踐準備JavaSpringGCCloud
- 進階計劃 | 知識小測第一期
- java知識點-高階Java