vue 父子组件与父子组件之间的通信

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<body>

<div id="app">
    <input type="text" v-model="msg">
    <!-- :cmovies="movies":父传子之传值 -->
    <!-- @item-click="itemClick":接收子组件通过自定义事件传过来的值(子传父亲) -->
    <!-- ref="c" 组件标识,利于得到该子组件实例对象 -->
    <cpn ref="c" :cmovies="movies" @item-click="itemClick"></cpn>
</div>

<!-- 子组件模板 -->
<template id="cpn">
    <div>
        <h1>从父组件传过来的值:</h1>

        <ul>
            <li v-for="item in xmovie" @click="clickmovie(item)">{{item}}--点我传值至父组件>></li>
        </ul>
    </div>
</template>
<script>
    // 子组件
    const cpn = {
        // 引用模板
        template : "#cpn",
        // props 父传子之接收
        // props: ["cmovies"],
        props : {
            cmovies :{
                // 限定类型
                type:Array,
                // 默认值(父组件未传值)
                default(){
                    // 这里为什么要用工厂函数?思考下,当限定类型为Object或Array时会报错
                    return [‘不能说的秘密‘,‘头文字D‘];
                },
            }
        },
        data(){
            return {
                // 将父组件传过来的值放到data里面,变成自己的属性(拓展性,不然不允许修改)
                xmovie : this.cmovies
            };
        },
        methods: {
            clickmovie (item){
                console.log("子组件点击",item)
                // 将点击事件转成自定义事件传给父组件
                // emit:发射
                console.log("值通过自定义事件发射至父组件")
                this.$emit(‘item-click‘,item);
            }
        },
        mounted(){
            console.log("cpn子组件挂载完毕,根组件root对象:",this.$root)
        }

    }
    // 父组件,在这里父组件是vue实例
    const app2 = new Vue({
        el: "#app",
        data: {
            // 准备传给子组件的值
            movies: [‘海王‘,‘海贼王‘],
            msg:"watch实时监测",
        },
        /*注册组件*/
        components:{
            cpn,
        },
        methods:{
            itemClick(item){
                console.log("父组件接收",item);
            }
        },
        //  watch:实时监测属性值的改变
        watch:{
            msg(newVal,oldVal){
                console.log("watch实时监测更新数据,新数据:",newVal)
            }
        },
        mounted  (){
            // this.$refs 所以的子组件
            // this.$refs.c 子组件中 设置了ref属性值为c的内个组件
            console.log("vue实例挂载完毕,有一个子组件,实例对象为:",this.$refs.c)
        }
    })

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

原文地址:https://www.cnblogs.com/cl94/p/12257891.html

时间: 2024-11-04 20:01:31

vue 父子组件与父子组件之间的通信的相关文章

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

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

Vue组件~父子组件之间的通信(传值)

1.父组件向子组件传参 父组件中通过v-bind对要传参数的绑定:(例如) :dataSourceName:是在子组件中要用到的值 "ctpSaveEchartSetting.dataSourceId":是在父组件中要传的值 子组件中的接收通过props(数据值单项绑定的)进行接收:(例如) 注:在props中有的变量就不能再data中再定义,或通过监测.计算属性直接去改变,因为js中的对象和数组是引用对象,指向同一个内存空间,如果在子组件中改变props中的值会影响到父组件中的值的状

vue中的父子组件之间的通信--新增、修改弹框

在一个vue页面中有时候内容会很多,为了方便编写查看,可以分为多个子组件,最后在父组件中引入对应的子组件即可. 下面这个是父子组件通信中的一个具体实例:新增.修改弹框. 子组件中主要写了关于新增.修改的弹框, 子组件: 1.弹框: <div class="newDocuments"> <div class="newDocuments_center"> <div class="center_header"> &l

vue的$emit 与$on父子组件与兄弟组件的之间通信

本文主要对vue 用$emit 与 $on 来进行组件之间的数据传输. 主要的传输方式有三种: 1.父组件到子组件通信 2.子组件到父组件的通信 3.兄弟组件之间的通信 一.父组件传值给子组件 父组件给子组件传子,使用props //父组件:parent.vue <template> <div> <child :vals = "msg"></child> </div> </template> <script&

VUE 2.0 父子组件之间的通信

父组件是通过props属性给子组件通信的来看下代码: 父组件: <parent> <child :child-com="content"></child> //注意这里用驼峰写法哦 </parent> data(){ return { content:'sichaoyun' }; } 子组件通过props来接受数据 第一种方法 props: ['childCom'] 第二种方法 props: { childCom: String //这里

87 全局和局部组件, 子父和父子之间的通信 混入 插槽 路飞导航栏

主要内容: 1  全局组件: a : 定义一个全局组件 Vue.component( 'global-component', { template: `<div> 注意: template一定要包一层div <h3>{{wanrong}}</h3> <h2>{{wanrong}}</h2> </div>`, data() { return { wanrong: 'hello', } } } ); 2  全局组件的使用的两种方式: a:

React 组件基本使用(3) ---父子组件之间的通信

当有多个组件需要共享状态的时候,这就需要把状态放到这些组件共有的父组件中,相应地,这些组件就变成了子组件,从而涉及到父子组件之间的通信.父组件通过props 给子组件传递数据,子组件则是通过调用父组件传给它的函数给父组件传递数据. 很简单的一个例子,我们在输入框中输入温度,输入框下面显示冷和热.这里就有两个组件,输入框和它下面的显示内容,且它们共享一个状态,就是温度.所以我们要把温度这个状态放到这两个组件的父组件中.这里就有三个组件,一个输入框TemperatureInput,  一个是显示内容

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

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

【vue】父组件主动调用子组件 /// 非父子组件传值

一  父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="header"></v-header> <hr> 首页组件 <button @click="getChildData()">获取子组件的数据和方法</button> </div> 父组件主动获取子组件的数据和方法: 1

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

一.父子组件通讯 父传子:1.父用子的时候通过属性传递2.子要声明props:['属性名']接收3.子组件template中直接用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="