vue-父子组件

1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    template:‘<h2>我是aaa组件</h2><bbb></bbb>‘,
                    components:{
                        ‘bbb‘:{
                            template:‘<h3>我是bbb组件</h3>‘
                        }
                    }
                }
            }
        });

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

2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:‘我是父组件的数据‘
                        }
                    },
                    template:‘<h2>我是aaa组件</h2><bbb></bbb>‘,
                    components:{
                        ‘bbb‘:{
                            template:‘<h3>我是bbb组件->{{msg}}</h3>‘
                        }
                    }
                }
            }
        });

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

3

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2"></bbb>
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:[‘mmm‘],
                            template:‘<h3>我是bbb组件->{{mmm}}</h3>‘
                        }
                    }
                }
            }
        });

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

4

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2" :my-msg="msg"></bbb>
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:[‘mmm‘,‘myMsg‘],
                            template:‘<h3>我是bbb组件->{{mmm}} <br> {{myMsg}}</h3>‘
                        }
                    }
                }
            }
        });

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

5.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2" :my-msg="msg"></bbb>
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:{
                                ‘m‘:String,
                                ‘myMsg‘:Number
                            },
                            template:‘<h3>我是bbb组件->{{mmm}} <br> {{myMsg}}</h3>‘
                        }
                    }
                }
            }
        });

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

6.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <span>我是父级 -> {{msg}}</span>
        <bbb @child-msg="get"></bbb>
    </template>
    <template id="bbb">
        <h3>子组件-</h3>
        <input type="button" value="send" @click="send">
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    methods:{
                        get(msg){
                            // alert(msg);
                            this.msg=msg;
                        }
                    },
                    components:{
                        ‘bbb‘:{
                            data(){
                                return {
                                    a:‘我是子组件的数据‘
                                }
                            },
                            template:‘#bbb‘,
                            methods:{
                                send(){
                                    this.$emit(‘child-msg‘,this.a);
                                }
                            }
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>
时间: 2024-11-07 20:25:13

vue-父子组件的相关文章

vue父子组件之间传值

vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种vue-cli搭建的同理 父组件通过 v-bind:属性名(自定义的) = "要传递的数据" 子组件通过 props:["属性名"]  这个属性名就是父组件传递过来的数据信息 <div id="app"> <mod :abc=&qu

【转】vue父子组件之间的通信

vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不同情况下又各有不同.最常见的就是父组件为控制组件子组件为视图组件.父组件传递数据给子组件使用,遇到业务逻辑操作时子组件触发父组件的自定义事件.无论哪种组织方式父子组件的通信方式都是大同小异. 父组件到子组件通讯 父组件到子组件的通讯主要为:子组件接受使用父组件的数据,这里的数据包括属性和方法(String,Number,Boolean,Object, Array ,Function).v

一个故事讲懂vue父子组件传值

作者:李佳明同学链接:https://www.jianshu.com/p/2272b6ca0f0c 一个故事讲懂vue父子组件传值 讲故事前先讲代码 父组件向子组件传值 父组件数据传递给子组件可以通过props属性来实现父组件: <template>  <div id="app">    <child-component v-bind:dataOfChild="dataOfParent"></child-component&

vue父子组件的传值总结

久违的博客园我又回来了.此篇文章写得是vue父子组件的传值,虽然网上已经有很多了.写此文章的目的就是记录下个人学习的一部分.接下来我们就进入主题吧! 在开发vue项目中,父子组件的传值是避免不掉的. 情况一:父组件给子组件传值方法,使用props 父页面:parent.vue 1 <template> 2 <div class="sidebar_contianer"> 3 <sidebar-item :routerData="transmitDa

Vue父子组件传值

 Vue父子组件传值:有四种方式:props,ref,emit 和模板传递通信slot 通过props来传值: 静态传值就是直接通过props来传递 动态传值是通过v-bind来绑定一个要传递值的key,然后后面跟要传递的内容,不过这个内容是可以改变的 比如: <input v-model="parentMsg"> <child v-bind:message="parentMsg"></child> 传递的值会跟着input里面输

Vue父子组件通信实践

组件(Component)是Vue.js的核心部分,组件的作用域是孤立的,所以不能在子组件模板内直接引用父组件的数据,但是组件之间的通信是必不可少的.组件A在其模板中使用了组件B,A组件要向B组件传递数据,B组件要将其内部发生的事情告知A组件,那么A.B组件怎么进行通信呢? Vue.js父子组件的关系可以总结为props down,events up,父组件通过props向下传递数据给子组件,子组件通过events给父组件发送消息,它们的工作方式如下图所示: 父组件 - 子组件:父组件传值给子组

Vue父子组件及非父子组件如何通信

1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: 子组件通过props来接收数据: 方式1: 方式2 : 方式3: 这样呢,就实现了父组件向子组件传递数据. 2.子组件与父组件通信 那么,如果子组件想要改变数据呢?这在vue中是不允许的,因为vue只允许单向数据传递,这时候我们可以通过触发事件来通知父组件改变数据,从而达到改变子组件数据的目的. 父组件: 3.非父子组件通信 如果2个组件不是父子组件那么如何通信呢?这时可以通过eventHub来实现

vue 父子组件传递数据

单向数据流: 数据从父级组件传递给子组件,只能单向绑定. 子组件内部不能直接修改从父级传递过来的数据. 解决方法: 可以使用data将父组件传递过来的数据拷贝一份存放起来,再修改拷贝的数据就可以了 //用data来解决不能修改父组件传递的数据的问题, // 我们新增一个number保存父组件传递过来的数据,这样就可以修改数据的值了 data:function(){ return { number: this.count } }, 数据就可以修改了: methods:{ handleclick:f

Vue 父子组件传值 props

1.Vue 的渲染周期: vue 如何实现响应式追踪. 父子组件通信有很多方式,今天单独聊下props 的方式.我们通过查找官方文档很容发现,props传值有静态和动态两种传值方式. 当然props 还提供许多验证,使数据更加严谨. 在使用父子传值时,出现了, 按照文档说明,例如: 1 <template> 2 <div v-if="data">{{parentName}} 3 4 <input type="text" v-model=

vue父子组件的通信

一.父组件向子组件传递数据 1.首先形成父子组件关系 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="../js/vue.js"></script> </head> <body>