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 相关文章推荐
比较不错的JS/JQuery显示或隐藏文本的方法
Feb 13 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
javascript弹出窗口中增加确定取消按钮
Jun 24 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
Sep 21 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
基于JavaScript实现表格滚动分页
Nov 22 Javascript
VUE 使用中踩过的坑
Feb 08 Javascript
微信小程序实现图片选择并预览功能
Jul 25 Javascript
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
javascript实现简单留言板案例
Feb 09 Javascript
vue3.0封装轮播图组件的步骤
Mar 04 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
图象函数中的中文显示
2006/10/09 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
ant design 日期格式化的实现
2020/10/27 Javascript
python操作CouchDB的方法
2014/10/08 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python dlib人脸识别代码实例
2019/04/04 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
CSS3 简写animation
2012/05/10 HTML / CSS
国际商务专业学生个人的自我评价
2013/09/28 职场文书
公司综合部的成员自我评价分享
2013/11/05 职场文书
教师岗位职责范本
2015/04/02 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
python flask框架快速入门
2021/05/14 Python
JavaScript实现简单的音乐播放器
2022/08/14 Javascript