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游戏之优化篇
Nov 08 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
JavaScript三元运算符的多种使用技巧
Apr 16 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
js实现碰撞检测特效代码分享
Oct 16 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 Javascript
对layui数据表格动态cols(字段)动态变化详解
Oct 25 Javascript
vue新建项目并配置标准路由过程解析
Dec 09 Javascript
JS实现网页时钟特效
Mar 25 Javascript
JavaScript中document.activeELement焦点元素介绍
Nov 27 Javascript
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
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
js css自定义分页效果
2017/02/24 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
sqlalchemy对象转dict的示例
2014/04/22 Python
Python切换pip安装源的方法详解
2016/11/18 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
pandas 选择某几列的方法
2018/07/03 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Python发送邮件实现基础解析
2020/08/14 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
总经理助理的八要求
2013/11/12 职场文书
双创工作实施方案
2014/03/26 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
水知道答案观后感
2015/06/08 职场文书