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 相关文章推荐
基于jquery的tab切换 js原理
Apr 01 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
5秒后跳转到另一个页面的js代码
Oct 12 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
vue如何获取点击事件源的方法
Aug 10 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
setTimeout时间设置为0详细解析
Mar 13 Javascript
JS简单实现动态添加HTML标记的方法示例
Apr 08 Javascript
vue+axios+element ui 实现全局loading加载示例
Sep 11 Javascript
vue和iview实现Scroll 数据无限滚动功能
Oct 31 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 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
php短域名转换为实际域名函数
2011/01/17 PHP
浅析PHP Socket技术
2013/08/02 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP实现简易blog的制作
2016/10/24 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JavaScript 原型继承
2011/12/26 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
[00:56]PWL开团时刻DAY8——追追追追追!
2020/11/09 DOTA
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Django中modelform组件实例用法总结
2020/02/10 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
如何在django中运行scrapy框架
2020/04/22 Python
python 图像增强算法实现详解
2021/01/24 Python
法国和欧洲海边和滑雪度假:Pierre & Vacances
2017/01/04 全球购物
2014厂务公开实施方案
2014/02/17 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
社区义诊活动总结
2014/04/30 职场文书
校庆活动策划方案
2014/06/05 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
python脚本框架webpy的url映射详解
2021/11/20 Python
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技