详解vue 组件之间使用eventbus传值


Posted in Javascript onOctober 25, 2017

对于前端的我们而言,并非是只有写界面才是最大的问题,很多的情况下,我们需要关注的是数据,比如js页面的数据传递等等,学习vue我们也是需要知道怎么去使用数据

当然,使用存储也是可以得,但是并非一定要缓存,当然在vue中有推荐了我们去使用vuex去数据交互,Vuex会让你的Vue代码足够灵活可控,把数据统一存入state, 只允许通过Actions触发Mutations修改。然而,有时候我们的项目并没有复杂到需要用上Vuex。,(我们也不讨论已经废除的vm.$dispatch)很多情况下我们都是需要一个事件的捕获,这时候我们就可以用到vue的eventbus了

受用eventbus的方法很是简单,我们需要做三步事情,第一步,我们需要创造一个容器去充当我们的eventbus

第二步,我们需要去抛出,或者说提交我们的事件

第三步,我们去监听我们的那个事件(也许这才是第二部)

首先,我们需要在全局定义我们的eventbus

详解vue 组件之间使用eventbus传值

这里我们定义到了eventbus。这就简单的完成了我们的第一步,当然,全局变量,我想你应该知道定义在哪儿的

接着我们先去抛出这个事件,使用¥。emit去“提交”

详解vue 组件之间使用eventbus传值

怎样,这点都可以理解吧,其次我们经行第三步,去监听

详解vue 组件之间使用eventbus传值

当然。这里已经监听好的。点击事件俺只是个累赘,

接下来我们就要去界面中使用它们了

首先,倒入我们所需要的文件:

详解vue 组件之间使用eventbus传值

这里我使用的是谈transimissionone还有transimissiontwo两个文件‘

接着是定义

详解vue 组件之间使用eventbus传值

其次是使用

详解vue 组件之间使用eventbus传值

最后运行我们的项目,查看下效果

详解vue 组件之间使用eventbus传值

这边主要是交大家使用,所以代码就俘虏在下面,主要是四个文件

transimissionone。vue(发送事件的文件)

<template> 
  <div class="transimission1"> 
  <button @click="get">点击发送数值到eventbus中</button>  
  </div> 
   
</template> 
 
<script> 
  export default { 
    name: "transimission1", 
    methods: { 
      get: function() { 
        console.log("Aaa"); 
        eventBus.$emit('eventBusName', "hellokugou"); 
      } 
    }, 
  } 
</script> 
 
<style> 
 
</style>

其次是transimissiontwo(监听者)

<template> 
  <div class="transimissiontwo"> 
    <button @click="method1">点击console.log出eventbus的信息 
</button> 
  </div> 
</template> 
 
<script> 
  export default { 
    name: "transimissiontwo", 
    methods: { 
      method1: function() { 
        //使用on老监听事件 
        eventBus.$on('eventBusName', function(val) {  
          console.log("这个是用transimissiontwo的val值为:"+val) 
        }) 
      } 
    } 
  } 
</script> 
<style> 
 
</style>

接着是我们的中枢。app。vue中使用

<template> 
  <div id="app"> 
    <click></click> 
  <transimissiontwo></transimissiontwo> 
    <transimissionone></transimissionone> 
  <sendparent @listenertochildevent="getmessagefromchild"></sendparent> 
    <value :locallogo="netlogo"></value> 
    <!--无法监听,说明要在那个组件中--> 
    <button @listenertochildevent="getmessagefromchild">测试能否监听</button> 
    <my_plug_in></my_plug_in> 
    <div class="choose_div"> 
      <ul> 
 
        <li> 
          <router-link to="/foo">foo页面</router-link> 
        </li> 
        <li> 
          <router-link to="/header">header页面</router-link> 
        </li> 
        <li> 
          <router-link to="/hello">hello页面</router-link> 
        </li> 
        <li style="clear: both;list-style: none;"></li> 
      </ul> 
 
    </div> 
 
    <div class="main"> 
      <router-view class="my_router_iew"></router-view> 
    </div> 
    <testmintui></testmintui> 
  </div> 
</template> 
 
<script> 
  import value from './components/value' 
  import click from "./components/click" 
  import my_plug_in from "./components/plug_in" 
  import sendparent from "./components/send_parent" 
  import testmintui from "./components/Test_mint-ui" 
  import transimissiontwo from "./components/transimissiontwo" 
  import transimissionone from "./components/transimissionone" 
 
  export default { 
    name: 'app', 
    data() { 
      return { 
        netlogo: "主页显示信息到组件中" 
      } 
    }, 
    components: { 
      value, 
      click, 
      my_plug_in, 
      sendparent, 
      testmintui, 
      transimissionone, 
    transimissiontwo, 
     
    }, 
    methods: { 
      getmessagefromchild: function(data) { 
        console.log(data); 
      } 
    } 
  } 
</script> 
 
<style> 
  body { 
    background-color: #f8f8ff; 
    font-family: 'Avenir', Helvetica, Arial, sans-serif; 
    color: #2c3e50; 
  } 
   
  ul { 
    width: 12rem; 
  } 
   
  ul li { 
    list-style: none; 
  } 
   
  ul li:not(:last-child) { 
    list-style: none; 
    width: 2rem; 
    margin-left: 0.1rem; 
    margin-right: 0.1rem; 
    float: left; 
    text-align: center; 
    background: #2C3E50; 
    color: white; 
  } 
   
  ul li a { 
    text-decoration: none; 
    font-size: 16px; 
    color: white; 
    line-height: 1rem; 
    text-align: center; 
  } 
   
  ul li:nth-child { 
    list-style: none; 
    clear: both; 
  } 
   
  .choose_div { 
    width: 100%; 
    overflow: scroll; 
  } 
</style>

请无视掉没用的代码。接着就是定义eventbus了

window.eventBus = new Vue();

就这样,很是简单,当然,对于级别的可以使用prop,下回再讲

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在多个页面使用同一个HTML片段的代码
Mar 04 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
Jan 09 Javascript
jquery 删除cookie失效的解决方法
Nov 12 Javascript
Javascript 按位左移运算符使用介绍(
Feb 04 Javascript
jquery 抽奖小程序实现代码
Oct 12 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
Nov 25 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
vue中axios的封装问题(简易版拦截,get,post)
Jun 15 Javascript
一篇文章弄懂javascript中的执行栈与执行上下文
Aug 09 Javascript
vue实现书本翻页动画效果实例详解
Apr 08 Vue.js
bootstrap时间控件daterangepicker使用方法及各种小bug修复
Oct 25 #Javascript
Windows安装Node.js报错:2503、2502的解决方法
Oct 25 #Javascript
JavaScript编程设计模式之构造器模式实例分析
Oct 25 #Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
Oct 25 #Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
Oct 25 #Javascript
JS获取当前地理位置的方法
Oct 25 #Javascript
JavaScript 异步调用
Oct 25 #Javascript
You might like
PHP高级OOP技术演示
2009/08/27 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
DWR实现模拟Google搜索效果实现原理及代码
2013/01/30 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
python数据处理实战(必看篇)
2017/06/11 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
计算机专业学生求职信分享
2013/12/15 职场文书
土地转让协议书范本
2014/04/15 职场文书
2014司机年终工作总结
2014/12/05 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
Golang Web 框架Iris安装部署
2022/08/14 Python