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 UI AutoComplete 自动完成使用小记
Aug 21 Javascript
jquery控制select的text/value值为选中状态
Jun 03 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
利用yarn实现一个webpack+react种子
Oct 25 Javascript
bootstrap导航条实现代码
Dec 28 Javascript
微信小程序实现实时圆形进度条的方法示例
Feb 24 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
Angular2使用vscode断点调试ts文件的方法
Dec 13 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 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
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
使用JavaScript和C#中获得referer
2014/11/14 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
jQuery操作基本控件方法实例分析
2015/12/31 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
jQuery的框架介绍
2016/05/11 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
jquery 动态遍历select 赋值的实例
2018/09/12 jQuery
vue 自定义右键样式的实例代码
2019/11/06 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
python正则中最短匹配实现代码
2018/01/16 Python
python 调用有道api接口的方法
2019/01/03 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
如何通过50行Python代码获取公众号全部文章
2019/07/12 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
一款利用纯css3实现的win8加载动画的实例分析
2014/12/11 HTML / CSS
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
语文教学感言
2014/02/06 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
Python 匹配文本并在其上一行追加文本
2022/05/11 Python