Vue學習(十一)——作用域

禿頭的毛睿發表於2020-10-15

1.元件的作用域

我們在定義元件時,作用域是元件本身,在呼叫元件時,作用域是父元件

2.作用域插槽

由於我們子元件中的資料不能再父元件中使用,所以我們在需要為slot傳入標籤時使用子元件資料的時候為slot動態繫結一個屬性名xxx,屬性值為子元件中的資料,然後再在父元件中通過template標籤的slot-scope屬性接收

      <cpn>
            <!--獲取子元件slot中傳過來的資料-->
            <template slot-scope="slot">
                <span v-for="it in slot.xxx">{{it}}-</span><br/>
                <span>{{slot.xxx.join('-')}}</span>
            </template>
        </cpn>

這樣就可以通過slot獲得子元件的資料了。 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<template id="cpn">
    <div>
        <slot :xxx="list">
            <ul>
                <li v-for="items in list">{{items}}</li>
            </ul>
        </slot>
    </div>
</template>



<div id="first">
    <div>
        <cpn></cpn>
        <cpn>
            <!--獲取子元件slot中傳過來的資料-->
            <template slot-scope="slot">
                <span v-for="it in slot.xxx">{{it}}-</span><br/>
                <span>{{slot.xxx.join('-')}}</span>
            </template>
        </cpn>
    </div>
</div>
<script src="../vue.js" ></script><!--匯入vue-->
<script>
    const app=new Vue({
        el:'#first',
        data:{
        },
        components:{
            cpn:{
                template:'#cpn',
                data(){
                    return {
                        list:['最美的神話','仙劍奇俠傳','青鳥飛魚','偏愛']
                    }
                }
            }
        }
    })
</script>
</body>
</html>

相關文章