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 相关文章推荐
表单提交验证类
Jul 14 Javascript
js querySelector和getElementById通过id获取元素的区别
Apr 20 Javascript
简单的代码实现jquery定时器
Nov 17 Javascript
js 判断js函数、变量是否存在的简单示例代码
Mar 04 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
Jun 08 Javascript
BootStrap整体框架之基础布局组件
Dec 15 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
Jan 22 Javascript
jQuery选择器之表单元素选择器详解
Sep 19 jQuery
vue-router 路由基础的详解
Oct 17 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
Vue Components 数字键盘的实现
Sep 18 Javascript
javascript canvas实现雨滴效果
Jun 09 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
把77A收信机改造成收音机
2021/03/02 无线电
学习php过程中的一些注意点的总结
2013/10/25 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
2016/10/31 PHP
smarty模板数学运算示例
2016/12/11 PHP
jQuery中的常用事件总结
2009/12/27 Javascript
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
关于跨站脚本攻击问题
2011/12/22 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
Django中反向生成models.py的实例讲解
2018/05/30 Python
Python3匿名函数用法示例
2018/07/25 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
2014年乡镇植树节活动方案
2014/02/28 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
学校捐书活动总结
2015/05/08 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Django框架中模型的用法
2022/06/10 Python
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL