• Vue 向组件中插入内容


    向组件中插入内容有2种方式

    • 槽点
    • 子组件

    demo  使用槽点向组件中插入内容

      Vue.component('Parent',{
            template:`  <!--反引号比引号更好用-->
            <div>
                <p>hello</p>
                <slot></slot>   <!--如果后续要在组件中插入元素、内容,需要先留好槽点,不能直接插入-->
            </div>
            `
        })
        
            
        new Vue({
            el:'#app',
            template:`
            <div>
                <parent>   <!--使用parent组件-->
                    <p>I am chy </p>  <!--使用组件时,组件标签的innerHtml会作为一个整体,替换槽点-->
                    <p>nice to meet you</p>  <!--必须要有槽点,不然innerHtml不知道放哪儿,无效-->
                </parent>
            </div>
            `
        });

    槽点未设置name时,使用该组件标签时,整个innerHtml都会被插入到槽点。slot是动态dom,innerHtml有多少内容,就插入多少内容。

    如果不设置槽点,2个<p>元素不能插入到组件中。

    demo   槽点设置name

      Vue.component('Parent',{
            template:`
            <div>
                <p>hello</p>
                <slot name="info"></slot>   <!--槽点设置了name-->
            </div>
            `
        })
        
            
        new Vue({
            el:'#app',
            template:`
            <div>
                <parent>   <!--使用parent组件-->
                    <p slot="info">I am chy </p>  <!--如果槽点设置了name,必须指定要插入的槽点-->
                    <p>nice to meet you</p>  <!--这个没有指定槽点,无效-->
                </parent>
            </div>
            `
        });
            

    demo  父子组件

      Vue.component('Child',{
            template:`
            <div>
                <p>I am chy</p>
                <p>nice to meet you</p>
            </div>
            `
        })
    
        Vue.component('Parent',{
            template:`
            <div>
                <p>hello</p>
                <child></child>   <!--子组件-->
            </div>
            `
        })
        
            
        new Vue({
            el:'#app',
            template:`
            <div>
                <parent></parent>
            </div>
            `
        });

    demo  获取父|子组件对象

      //子组件
        Vue.component('Child',{
            template:`
            <div>
                <p>I am chy</p>
                <p>nice to meet you</p>
            </div>
            `,
            data(){
                return {
                    msg:'this is the child'
                }
            },
            mounted() {  //生命周期方法,dom加载完成
                console.log(this.$parent);  //访问父组件对象|实例
            }
        })
    
    
        // 父组件
        Vue.component('Parent',{
            template:`
            <div>
                <p>hello</p>
                <child ref="son"></child>   <!-- ref给子组件的引用起一个名字 -->
            </div>
            `,
            data(){
                return {
                    msg:'this is the parent'
                }
            },
            mounted() {
                console.log(this.$refs.son);  //访问子组件对象|实例:this.$refs.子组件的ref属性值
            }
        })
        
            
        new Vue({
            el:'#app',
            template:`
            <div>
                <parent></parent>
            </div>
            `
        });

    只要当前dom中有元素使用了ref属性,就可以使用  this.$refs.ref属性值  来获取对应的实例

    常用的还有

    • this.$el    获取el对应元素的dom
    • this.$data   获取data部分的实例
  • 相关阅读:
    How do I change a .txt file to a .c file?
    [CQOI2007]余数求和
    CSP-J总结&题解
    【CSP游记S】
    [LuoguP1462]通往奥格瑞玛的道路
    归并排序——逆序对
    [NOIP 2011]选择客栈
    [二分图初步]【模板】二分图匹配,匈牙利算法
    [NOIP 2018]旅行
    黑魔法师之门 (magician)-并查集
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12614114.html
Copyright © 2020-2023  润新知