美文网首页
父组件访问子组件的方式$children

父组件访问子组件的方式$children

作者: 63537b720fdb | 来源:发表于2020-07-24 23:55 被阅读0次

一、父访子的方式 $children

当父组件想要直接访问子组件时,可以通过父组件的$children方法直接获取子组件对象。
举例:
父组件通过$children的方法直接获取两个子组件对象

        <div id="app">
            <cpn></cpn>
        </div>
        <template id="cpn">
            <div>
                <cpn1></cpn1>
                <cpn2></cpn2>
                <button @click="showChildCpn">显示所有子组件信息</button>
            </div>
        </template>
        <template id="cpn1">
            <div>
                <h2>子组件1</h2>
            </div>
        </template>
        <template id="cpn2">
            <div>
                <h2>子组件2</h2>
            </div>
        </template>
        <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            
            const cpn = Vue.extend({
                template: '#cpn',
                components: {
                    /*子组件1*/
                    cpn1:{
                        template: '#cpn1',
                        data() {
                            return{
                                name:'one'
                            }
                        }
                    },
                    /*子组件2*/
                    cpn2:{
                        template: '#cpn2',
                        data(){
                            return{
                                name:'two'
                            }
                        }
                    }
                },
                methods: {
                    /*打印子组件对象*/
                    showChildCpn() {
                        const children = this.$children
                        for(let i in children) {
                            console.log(children[i]);
                        }
                    }
                }
                
            })
            
            const app = new Vue({
                el: '#app',
                /*注册父组件*/
                components: {
                    cpn: cpn
                }
            })

打印出两个子组件对象


image.png

二、$children的缺点

利用$children获取到的数组类型,访问其中的组件必须通过索引值。
当子组件过多时,往往不能确定他的索引值,所以引进了新的父访子的方式$refs

三、直接父访子的缺点

虽然可以通过$children的方式直接获取子组件对象,进而获取子组件中的方法和数据,但是在一个组件中直接获取另一个组件去操作数据和方法的方式,会让两个组件的耦合度变高,组件的独立性下降,后期维护困难。

相关文章

网友评论

      本文标题:父组件访问子组件的方式$children

      本文链接:https://www.haomeiwen.com/subject/pzvelktx.html