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 相关文章推荐
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
May 15 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
Sep 25 Javascript
jQuery实现下滑菜单导航效果代码
Aug 25 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
vue.js入门(3)——详解组件通信
Dec 02 Javascript
JavaScript字符串_动力节点Java学院整理
Jun 27 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
Vue实现计算器计算效果
Aug 17 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文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
php+jquery+html实现点击不刷新加载更多的实例代码
2016/08/12 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
javascript之更有效率的字符串替换
2008/08/02 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
javascript的push使用指南
2014/12/05 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
2015/03/13 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
HTML的select控件美化
2017/03/27 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
websocket+sockjs+stompjs详解及实例代码
2018/11/30 HTML / CSS
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
英文自荐信格式
2013/11/28 职场文书
办公室文书岗位职责
2013/12/16 职场文书
法人授权委托书范本
2014/09/17 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL