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 大数据相加的问题
Aug 03 Javascript
JavaScript 实现鼠标拖动元素实例代码
Feb 24 Javascript
JavaScript中检查对象property的存在性方法介绍
Dec 30 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
Sep 20 Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 Javascript
使用微信小程序开发前端【快速入门】
Dec 05 Javascript
javascript容错处理代码(屏蔽js错误)
Jan 20 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 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获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
PHP使用mysql_fetch_row查询获得数据行列表的方法
2015/03/18 PHP
Javascript hasOwnProperty 方法 &amp; in 关键字
2008/11/26 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
js创建数组的简单方法
2016/07/27 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
详谈js模块化规范
2017/07/07 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python发布模块的步骤分享
2014/02/21 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
父母寄语大全
2014/04/12 职场文书
入股协议书范本
2014/04/14 职场文书
民间借贷协议书范本
2014/10/01 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
人事局接收函
2015/01/30 职场文书
升职自荐信范文
2015/03/27 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL