程序员爱编程

Vue:作用域

2018-10-21  本文已影响6人  一叶扁舟丶

正式介绍slot前, 需要先知道一个感念: 编译的作用域.比如父组件中有如下模板:

<child-component>
    {{ message }}
</child-component>

这里的 message 就是一个 slot, 但是它绑定的是父组件的数据,而不是组件 <child-component> 的数据.
父组件模板的内容在父组件作用域内编译,子组件模板的内容是在子组件作用域内编译.例如下面的代码示例:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>示例</title>

</head>
<body>

    <div id="app">
        <child-component v-show="showChild"></child-component>
    </div>
    
    <script src="https://unpkg.com/vue/dist/vue.min.js"></script>


    <script>

        Vue.component('child-component', {
            template: '<div>子组件</div>'
        });

        var app = new Vue({
            el: '#app',
            data: {
                showChild: true
            }
        })

    </script>

</body>
</html>


这里的状态 showChild 绑定的是父组件的数据,如果想在子组件上绑定,那应该是:


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>示例</title>

</head>
<body>

    <div id="app">
        <child-component></child-component>
    </div>
    
    <script src="https://unpkg.com/vue/dist/vue.min.js"></script>

    <script>

        Vue.component('child-component', {
            template: '<div  v-show="showChild">子组件</div>',
            data: function () {
                return {
                    showChild: true
                }
            }
        });
        var app = new Vue({
            el: '#app'
        })

    </script>
</body>
</html>

因此, slot 分发的内容,作用域是在父组件上的.

上一篇 下一篇

猜你喜欢

热点阅读