vue--综合组件间的通信

二、综合组件之间的通信

实现一个ToDoList。

①完成所有的组件的创建和使用

②add
点击add按钮时候,将用户输入的内容(todoinput),显示在(todolist)

核心代码:兄弟组件间通信
步骤1:var bus = new Vue()
步骤2:在准备接受数据的组件
bus.$on(‘addEvent‘,function(){

})
步骤3:触发事件
bus.$emit(‘addEvent‘,123)

将todolist中数组的元素 渲染在todoitem的每一个span标签。(父子组件通信)

③delete

在todoitem中点击delete按钮时,将该todoitem删除,由于todoitem的数量 取决于 todolist中数组

子组件 和 父组件通信、

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/vue-resource.js"></script>
</head>
<body>
<div id="container">
    <p>{{msg}}</p>
    <todobox></todobox>
</div>
<script>
    <!--兄弟间通信-->
    var bus = new Vue();
//    input组件
    Vue.component("todoinput",{
//        保存用户输入的数据
        data:function(){
            return{
                userInput:""
            }
        },
        methods:{
            sendInput:function(){
//                触发自定义事件,将this.userInput这个传递到todolist
                bus.$emit("addEvent",this.userInput);
                this.userInput = "";
            }
        },
        template: `
            <div>
                <h1>待做事项</h1>
                <input type="text" placeholder="健身" v-model="userInput"/>
                <button @click="sendInput">Add</button>
            </div>

             `
    })
//    列表组件
    Vue.component("todolist",{
//        保存传递来的用户输入的数据
        data:function(){
            return{
                inputList:[]
            }
        },
        beforeMount:function(){
//            触发绑定
//            msg就是事件触发后传递过来的数据
            //var that = this;
            bus.$on("addEvent",(msg)=>{
//                保存到数组inputList中
                this.inputList.push (msg) ;
            })
        },
        template: `
        <div>
            <ul>
               <todoitem v-bind:content="tmp" v-for="(tmp,index) in inputList" v-bind:key="index" v-bind:myIndex="index"></todoitem>
            </ul>
        </div>
             `
//        出现警告,加下标,提高列表渲染
    })
//    item组件
    Vue.component("todoitem",{
//        props子组件获取父组件的数据,将todolist中的内容以及内容的下标获取
        props:["content","myIndex"],
        methods:{
//            通过下标删除
            deleteList:function(){
                this.$parent.inputList.splice(this.myIndex,1);
            }
        },
        template: `
        <div>
            <li>
                <button @click="deleteList">delete</button>
                 <span>{{content}}</span>
            </li>
        </div>
             `
    })
//根组件
    Vue.component("todobox",{
        template:`
            <div>
                <todoinput></todoinput>
                <todolist></todolist>
            </div>
        `
    })
    new Vue({
        el: "#container",
        data: {
            msg: "Hello Vue"
        }
    })
</script>
</body>
</html>
时间: 2024-11-06 03:53:10

vue--综合组件间的通信的相关文章

vue不同组件间的通信

不同组件间通信可以通过新建一个对象充当通信对象来实现. 1.新建一个对象A 2.在组件B中引入A对象, A.$emit('addShopCart',5);  5是传给回调函数的参数. 3.在组件C中引入A对象,A.$on('addShopCart',function(num){....}) B组件中发出一个名叫addShopCart的包裹,包裹里装着机密数字5,C组件说出了包裹名'addShopCart',所以拿到了包裹,并且可以对数字五进行进一步的处理. 具体代码如下 1.新建一个名为conn

vue中组件间的通信,父传子,子传父

参考文章 :https://www.cnblogs.com/yszblog/p/10135969.html 1 父传子 子组件Vue 父组件 注册子组件 子组件在props中创建一个属性,用以接收父组件传过来的值 父组件中注册子组件 在子组件标签中添加子组件props中创建的属性 把需要传给子组件的值赋给该属性 2 通过$emit  子组件向父组件传值 2.1 子组件Vue 2.2 父组件 2.3 父组件监听子组件发射的事件名 子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件 将需要

vue中组件间的通信

1.props:父组件的数据传递给子组件(数据在子组件中) (1)在子组件中申明props,props的类型一般为数组类型 window.HomeList ={ template, props:['empList'] } (2)在父组件中,给子组件所在的标签绑定属性 <home-list :empList="empList"></home-list> 父组件的数据如下: data(){ return { hobbies:['吃饭','睡觉','打豆豆','看书'

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

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

vue组件间的通信之pubsub-js

本文介绍使用发布订阅的方式进行vue组件间的通信 我认为这种方式比较自由, 不存在组件间的关系问题 1. 首先安装pubsub-js npm install --save pubsub-js 2. 订阅方组件 import PubSub from 'pubsub-js' mounted(){ // 执行异常代码 // 订阅消息 PubSub.subscribe('deleteTodo',(msg,index)=>{ this.deleteTodo(index) // 调用deleteTodo方法

Vue.js组件之间的通信

导语:组件之间的关系不外乎两种, 父子组件和非父子组件,本文将对两类组件之间的通信方式进行详细阐述. 父子组件间的通信 通信方式1(单向绑定): Props down, Events up (建议使用) Props down, Events up 是指 使用props向子组件传递数据,父组件属性发生变化时,子组件可实时更新视图:子组件发生变化,可以使用$emit发送事件消息,以此向父组件传递变化消息. props 是单向的,当父组件的属性变化时,将传递给子组件,但子组件中的props属性变化不会

(尚033)Vue_案例_slot(组件间的通信4:slot)

1.组件间的通信4:slot(slot:插槽,就是一个占位) slot用于标签反复使用很多次 1.1理解 此方式用于父组件向子组件传递标签数据, 其他为数据通信 外面组件向里面组件传递标签进去,直接拿我的标签显示数据就行 假如我传递的是数据,我还得映射成标签,才能显示数据 1.2子组件Child.vue 1.3父组件:Parent.vue 注意底下这两个<div>与上面的<slot>是对应关系 ============================================

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

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

vue 组件间的通信

(1)props:用于父组件向子组件传递消息 使用方法: 在父组件中,使用子组件时,<Child v-bind:data="data"/>,通过v-bind把子组件需要的数据传递给子组件: 在子组件中通过props来接受传过来的数据,常用写法:props:['data',......]/props:{data:dataType,.....} 举例: (2)自定义事件:用于子组件向父组件传递消息 使用方法: 在父组件中,对子组件的标签绑定一个自定义的事件监听,<Chil