vue组件之间通信实例总结(点赞功能)


Posted in Javascript onDecember 05, 2018

本文实例讲述了vue组件之间通信。分享给大家供大家参考,具体如下:

总结:

父组件--》子组件

①通过属性

步骤1:

<son myName="michael" myPhone='123'></son>
<son :myName="userList[0]"></son>

步骤2:

Vue.component('son',{
props:['myName','myPhone']
})

②通过$parent

直接在子组件中通过this.$parent得到调用子组件的父组件

子组件--》父组件

①events up

步骤1:在父组件中 调用子组件的时候 绑定一个自定义事件 和 对应的处理函数

methods:{
recvMsg:function(msg){

//msg就是传递来的数据

}
},
template:'
<son @customEvent="recvMsg"></son>
'

步骤2:在子组件中 把要发送的数据通过触发自定义事件传递给父组件

this.$emit('customEvent',123)

②$refs

reference 引用

步骤1:在调用子组件的时候 可以指定ref属性

<son ref='zhangsan'></son>

步骤2:通过$refs得到指定引用名称对应的组件实例

this.$refs.zhangsan

兄弟组件通信

步骤1:创建一个Vue的实例 作为事件绑定触发的公共的对象

var bus = new Vue();

步骤2:在接收方的组件 绑定 自定义的事件

bus.$on('customEvent',function(msg){
//msg是通过事件传递来的数据 (传递来的123)
});

步骤3:在发送方的组件 触发 自定义的事件

bus.$emit('customEvent',123);

每日一练:

创建2个组件,main-component,son-component

视图:

main-component 显示一个按钮
son-component 显示一个p标签

功能:

main-component 定义一个变量count,初始化为0,将count传递给son-component,son-component接收到数据显示在p标签中

main-component 在点击按钮时,实现对count的自增操作,要求son-component能够实时显示count对应的数据

son-component在接收到count之后,在count大于10的时候,将main-component的按钮禁用掉
(参考:<button v-bind:disabled="!isValid">clickMe</button>)

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>3water.com 小练习</title>
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <main-component></main-component>
  </div>
  <script>
  /*
    每日一练:
创建2个组件,main-component,son-component
视图:
 main-component 显示一个按钮
 son-component 显示一个p标签
功能:
  main-component 定义一个变量count,初始化为0,将count传递给son-component,son-component接收到数据显示在p标签中
  main-component 在点击按钮时,实现对count的自增操作,要求son-component能够实时显示count对应的数据
  son-component在接收到count之后,在count大于10的时候,将main-component的按钮禁用掉
  (参考:<button v-bind:disabled="!isValid">clickMe</button>)
  */
//创建父组件
    Vue.component("main-component",{
      data:function(){
        return {
          count:0,
          isDisabled:true
        }
      },
      methods:{
        //点击按钮对count进行自增
        //并通过$emit触发countAdd,并把count的值传递给子组件
        //判断count==10的时候让按钮禁用
        countAdd:function(){
          this.count++;
          console.log("对数据进行自增:"+this.count);
          this.$emit("countAdd",this.count);
        }
      },
      template:`
        <div>
          <button @click="countAdd" v-bind:disabled="!isDisabled">点我</button>
          <son-component v-bind:myCount="count"></son-component>
        </div>
      `
    })
//创建子组件
    Vue.component("son-component",{
      //通过props接收父组件传递过来的值
      props:["myCount"],
      template:`
        <div>
          <p>{{myCount}}</p>
        </div>
      `,
      //数据更新完成后判断从父组件拿到的值
      updated:function(){
        if(this.myCount>10){
          //子组件通过$parent直接获取父组件的数据
            this.$parent.isDisabled = false;
          }
      }
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试,可得到如下运行效果:

vue组件之间通信实例总结(点赞功能)

感兴趣的朋友还可以使用上述在线工具测试一下代码的运行效果。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
Auntion-TableSort国人写的一个javascript表格排序的东西
Nov 12 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
JavaScript 继承详解(二)
Jul 13 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
js function定义函数的几种不错方法
Feb 27 Javascript
javascript中递归函数用法注意点
Jul 30 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
利用10行js代码实现上下滚动公告效果
Dec 08 Javascript
Vue 实现树形视图数据功能
May 07 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 Javascript
微信小程序中转义字符的处理方法
Mar 28 Javascript
浅谈 JavaScript 沙箱Sandbox
Nov 02 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
Dec 05 #Javascript
JS获取月的第几周和年的第几周实例代码
Dec 05 #Javascript
JavaScript实现学生在线做题计时器功能
Dec 05 #Javascript
vue-cli3搭建项目的详细步骤
Dec 05 #Javascript
详解vue中async-await的使用误区
Dec 05 #Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 #Javascript
使用FormData实现上传多个文件
Dec 04 #Javascript
You might like
德劲1104的电路分析与改良
2021/03/01 无线电
默默小谈PHP&amp;MYSQL分页原理及实现
2007/01/02 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
php自定义截取中文字符串-utf8版
2017/02/27 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JS hashMap实例详解
2016/05/26 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
python批量修改ssh密码的实现
2019/08/08 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
门诊手术室工作制度
2014/01/30 职场文书
铁路工务反思材料
2014/02/07 职场文书
统计岗位职责
2014/02/21 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
销售竞赛活动方案
2014/08/23 职场文书
教师创先争优承诺书
2015/04/27 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js