1. 程式人生 > >vue 中的 $slot 獲取 插槽的節點

vue 中的 $slot 獲取 插槽的節點

vue 中的 $slot

以前一直不知到這個東西,後來發現 vue api 中 藏著很多的 很神奇的 api,比如這個


具名插槽很好理解,但是那個 default 就有點難了,

寫了一個炒雞簡單的 demo

father:

<template> <div> <button@click="getSlot">getSlot</button> <tryref="try"> <divclass="hello1">hello1</div> <divclass="hello2
">hello2</div> <divclass="hello3">hello3</div> </try> <button@click="getArc">getArc</button> </div></template><script>import try from './try'export default { components: { try }, methods: { getSlot () { this.$refs.try
.getSlot() } }}</script>

try.vue

<template> <div> <h2>我是子元件 的 標題</h2> <slot> 只有在沒有內容分發的時候我才會出現 </slot> </div></template><script>export default { methods: { getSlot () { console.log(this.$slots) } }}</script
>

點選了getSlot 之後的輸出

可以看到 default ,

裡面有插入的 三個 標籤和 三個標籤之間的 兩個 空格,就有 5 個 了

通過這個就能很輕易的 拿到 父元件 通過插槽插入 子元件的 標籤了

this.slotChildren = [] for (let i = 0; i< this.$slots.default.length; i++) { if (that.$slots.default[i].elm.nodeType !== 3) { that.slotChildren.push(that.$slots.default[i]) // 獲得 那些 插入的 按鈕 } }