Vue入门七、父子组件间通讯

一、父子组件通讯

父传子:
1、父用子的时候通过属性传递
2、子要声明props:[‘属性名‘]接收
3、子组件template中直接用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    // 父传子
    var child = {
        template: `
            <div>我是子组件
            {{sendToChild}}
            </div>
        `,
        props: [‘sendToChild‘]
    }
    var parent = {
        template: `
            <div>我是父组件
                <child sendToChild="send"></child>
            </div>
        `,
        components: {
            child
        }
    }
    new Vue({
        el: ‘#app‘,
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        components: {
            parent
        }
    })
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    // 父传子
    var child = {
        template: `
            <div>我是子组件
            {{sendToChild}}
            </div>
        `,
        props: [‘sendToChild‘]
    }
    var parent = {
        template: `
            <div>我是父组件
                <child v-bind:sendToChild="send"></child>
            </div>
        `,
        components: {
            child
        },
        data() {
            return {
                send:
                    {name: ‘zhangsan‘, age: 12}
            }
        }
    }
    new Vue({
        el: ‘#app‘,
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        components: {
            parent
        }
    })
</script>
</body>
</html>

子传父:br/>1、子组件里通过this.$emit(‘自定义事件名‘,‘变量1‘,‘变量2‘)触发
2、父组件里通过@自定义事件名=‘事件名‘监听
this.$emit(‘hellobaba‘,‘给你带个苹果‘,‘给你带个梨‘)
<child @hellobaba="myaccept"></child>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    // 子传父
    var child = {
        template: `
            <div>我是子组件
                <button @click="sendToParent">点我送礼物给爸爸</button>
            </div>
        `,
        methods:{
            sendToParent(){
                // 子传父表达式this.$emit(‘父组件接收事件名‘,‘参数1‘,‘参数2‘)
                this.$emit(‘hellobaba‘,‘给你带个苹果‘,‘给你带个梨‘)
            }
        }
    }
    var parent = {
        // 父组件中@子传入事件名进行监听
        template: `
            <div>我是父组件
                <child @hellobaba="myaccept"></child>
                儿子给我:{{param1}},{{param2}}
            </div>
        `,
        components: {
            child
        },
        data(){
            return {
                param1:‘‘,
                param2:‘‘
            }
        },
        methods: {
            myaccept(val1,val2){
                this.param1 = val1
                this.param2 = val2
            }
        }
    }
    new Vue({
        el: ‘#app‘,
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        components: {
            parent
        }
    })
</script>
</body>
</html>

Vue入门七、父子组件间通讯

原文地址:https://blog.51cto.com/12012821/2399322

时间: 2024-10-07 12:13:01

Vue入门七、父子组件间通讯的相关文章

Vue2.0入门系列——父子组件间通信

1.子组件更新,父组件不变 点击"按钮"按钮,子组件数据被修改,父组件数据不变  =========>>>>>>  项目源代码, <head> <meta charset="UTF-8"> <title>v2.0父子组件通信</title> <script src="./vue.js"></script> <script> wi

vue实现v-model父子组件间的双向通信

首先讲清楚有个缺点:父页面若同时使用多个子组件,永远只会只能实现第一个双向驱动,我是新手,还在研究.如果有高手请指教,感谢! 子组件 <script> export default { model: { prop: 'path', event: 'cc' }, props: { label: {type: String, default: '点击'}, path:String, }, methods: { btnChange() { this.$emit('cc', res.data) },

第四节:Vue表单标签和组件的基本用法,父子组件间的通信

vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="vue.js"></script> </head> <body> <div id="app"&

vue的父子组件间传值以及非父子间传值

Vue组件间的传值方式: 父传子 子传父 非父子间传值 1.首先父组件传值给子组件,使用bind绑定属性,然后在子组件用props接收属性值. //父组件 <template> <input type="text" /> <br/> <child :inputValue="inputValue"></child> </template> <script> import child f

父子组件间的通讯

因为vue进行组件开发时候,允许组件进行嵌套,因此父子组件需要进行通讯来获取父组件或子组件中的数据. 父传子 父组件给子组件传数据通过在子组件的标签上绑定属性,将数据绑定给某个属性 子组件要获取父组件传过来的信息,必须在内部定义props属性 子组件标签上: :c-message="message" 子组件内部定义porps: 数组写法 props:['cMessage'] 对象写法 props:{   cMessage:String//数据类型限制} 最全的设置写法 props:{

React 组件间通讯

React 组件间通讯 说 React 组件间通讯之前,我们先来讨论一下 React 组件究竟有多少种层级间的关系.假设我们开发的项目是一个纯 React 的项目,那我们项目应该有如下类似的关系: 父子:Parent 与 Child_1.Child_2.Child_1_1.Child_1_2.Child_2_1 兄弟:Child_1 与 Child_2.Child_1_1 与 Child_2.etc. 针对这些关系,我们将来好好讨论一下这些关系间的通讯方式. (在 React 中,React 组

【Vue】浅谈Vue不同场景下组件间的数据交流

浅谈Vue不同场景下组件间的数据“交流” Vue的官方文档可以说是很详细了.在我看来,它和react等其他框架文档一样,讲述的方式的更多的是“方法论”,而不是“场景论”,这也就导致了:我们在阅读完文档许多遍后,写起代码还是不免感到有许多困惑,因为我们不知道其中一些知识点的运用场景.这就是我写这篇文章的目的,探讨不同场景下组件间的数据“交流”的Vue实现 父子组件间的数据交流 父子组件间的数据交流可分为两种: 1.父组件传递数据给子组件 2.子组件传递数据给父组件 父组件传递数据给子组件——pro

非父子组件间的传值

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>非父子组件间的传值(Bus/总线/发布订阅模式/观察者模式)</title> <script src="./vue.js"></script> </head> <body> <div

父子组件间的传值

父子组件间通信 父组件-->子组件 1.父组件通过给子组件添加属性给子组件传值,子组件通过props来接受. 2但是要在属性前加“:”,即使用v-bind指令,才能使属性值是js代码,不然就是字符串. 3.单项输出流.即子组件不允许修改父组件传递的值,只能使用,不能修改. 父组件通过属性向子组件传值时,如果传递的是引用型的值,这时候子组件对父组件传递的值进行修改可能会影响其他子组件对这个引用类型值的使用. 解决办法:子组件在data项中新赋值父组件的变量,操作新的变量即可. 子组件-->父组件