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 相关文章推荐
Jquery之美中不足小结
Feb 16 Javascript
JavaScript的继承的封装介绍
Oct 15 Javascript
javascript删除option选项的多种方法总结
Nov 22 Javascript
jQuery中extend函数详解
Jul 13 Javascript
js实现StringBuffer的简单实例
Sep 02 Javascript
原生JS京东轮播图代码
Mar 22 Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 jQuery
教你5分钟学会用requirejs(必看篇)
Jul 25 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
JavaScript实现跟随鼠标移动的盒子
Jan 28 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中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
ThinkPHP模板判断输出Present标签用法详解
2014/06/30 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
js showModalDialog参数的使用详解
2014/01/07 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
python分析nignx访问日志脚本分享
2015/02/26 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
Python笔记之facade模式
2019/11/20 Python
Python中six模块基础用法
2019/12/08 Python
学习Python列表的基础知识汇总
2020/03/10 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
商务考察邀请函范文
2014/01/21 职场文书
科学发展观活动总结
2014/08/28 职场文书
道歉短信大全
2015/05/12 职场文书
公司周年庆寄语
2019/06/21 职场文书
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
实现一个简单得数据响应系统
2021/11/11 Javascript
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
使用Python开发冰球小游戏
2022/04/30 Python