vue综合组件间的通信详解


Posted in Javascript onNovember 06, 2017

本文实例为大家分享了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中数组

子组件 和 父组件通信:

vue综合组件间的通信详解

<!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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript的继承的封装介绍
Oct 15 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
JavaScript中使用document.write向页面输出内容实例
Oct 16 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
js 上传文件预览的简单实例
Aug 16 Javascript
Vue.js在使用中的一些注意知识点
Apr 29 Javascript
socket.io学习教程之基本应用(二)
Apr 29 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
node文件批量重命名的方法示例
Oct 23 Javascript
echarts实现词云自定义形状的示例代码
Feb 20 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
SSM VUE Axios详解
Oct 05 Vue.js
Angular 4中如何显示内容的CSS样式示例代码
Nov 06 #Javascript
详解基于vue-cli优化的webpack配置
Nov 06 #Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
Nov 06 #Javascript
js中apply与call简单用法详解
Nov 06 #Javascript
js实现简单数字变动效果
Nov 06 #Javascript
利用百度地图API获取当前位置信息的实例
Nov 06 #Javascript
原生js封装添加class,删除class的实例
Nov 06 #Javascript
You might like
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
php 接口类与抽象类的实际作用
2009/11/26 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
理解AngularJs指令
2015/12/10 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
js实现验证码功能
2020/07/24 Javascript
JS实现放大镜效果
2020/09/21 Javascript
原生js实现分页效果
2020/09/23 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
用pandas划分数据集实现训练集和测试集
2020/07/20 Python
python自动化办公操作PPT的实现
2021/02/05 Python
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
2014年管理工作总结
2014/11/22 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
教育教学工作反思
2016/02/24 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
MySQL里面的子查询的基本使用
2021/08/02 MySQL