Vue全局事件总线

这篇具有很好参考价值的文章主要介绍了Vue全局事件总线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue全局事件总线,linerVue,vue.js,前端,javascript

 main.js

//引入Vue
import Vue from 'vue'
//引入App
import App from "./App";
//关闭Vue的生产提示
Vue.config.productionTip = false
// const Demo = Vue.extend({})
// const d = new Demo()
// Vue.prototype.x = d//创建vm
new Vue({
    el:'#app',
    render:h=>h(App),
    beforeCreate() {
        Vue.prototype.$bus = this //安装全局事件总线
    }
})

Student.vue

    <button @click="sendStudentName">把学生名给school组件</button>
  methods:{
    sendStudentName(){
      this.$bus.$emit('hello',this.name)
    }
  },

School.vue

 mounted() {
    // console.log("school",this.x)
    this.$bus.$on('hello',(data)=>{
      console.log('我是school组件,收到了数据',data)
    })
  },
  beforeDestroy() {
    this.$off('hello')
  },

TodoList案例优化:

main.js

//引入Vue
import Vue from 'vue'
//引入App
import App from "./App";
//关闭Vue的生产提示
Vue.config.productionTip = false
//创建vm
new Vue({
    el:'#app',
    render:h=>h(App),
    beforeCreate() {
        Vue.prototype.$bus = this
    }
})

App.vue: 删除之前给Mylist绑定的:checkTodo  :deleteTodo

  mounted() {
    this.$bus.$on('checkTodo',this.checkTodo)
    this.$bus.$on('deleteTodo',this.deleteTodo)
  },
  beforeDestroy() {
    this.$bus.$off('checkTodo')
    this.$bus.$off('deleteTodo')
  }

MyList.vue:  删除props接收的checkTodo,deleteTodo,删除给MyItem绑定的:checkTodo  :deleteTodo

MyItem.vue:  删除props接收的checkTodo,deleteTodo

  methods:{
    //勾选or取消勾选
    handleCheck(id){
      //通知App组件将对应的todo对象的done值取反
      // this.checkTodo(id)
      this.$bus.$emit('checkTodo',id)
    },
    //删除
    handleDelete(id){
        if (confirm('确定删除吗')){  //confirm根据用户的交互来决定到底是布尔值为真还是为假,点击确定为真,点击取消为假
          // this.deleteTodo(id)
          this.$bus.$emit('deleteTodo',id)
        }
    }
  }

Vue全局事件总线,linerVue,vue.js,前端,javascript

 文章来源地址https://www.toymoban.com/news/detail-607416.html

到了这里,关于Vue全局事件总线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2-全局事件总线、消息的订阅与发布、TodoList的编辑功能、$nextTick、动画与过渡

    🥔:高度自律即自由 更多Vue知识请点击——Vue.js 一种组件间通信的方式,适用于任意组件间通信。通俗理解就是一个定义在所有组件之外的公共嘎达,这个嘎达可以有vm或vc上的同款 $on、$off、$emit ,也可以让所有组件都访问到。要想实现这个事情,只能在 Vue.prototype 上添加

    2024年02月11日
    浏览(40)
  • js的鼠标事件(JavaScript的鼠标事件,vue的鼠标事件)

    js鼠标事件,相关属性: vue鼠标事件,相关属性 (js鼠标事件和vue中的鼠标事件区别是省略了on字符):

    2024年02月12日
    浏览(46)
  • vue3全局事务总线mitt

    vue3中$on,$off 和 $once 实例方法已被移除,组件实例不再实现事件触发接口。可以使用Mitt库(其实就是发布订阅模式的设计) 安装 内置方法 发布事件 使用方法通过emit派发, on 方法添加事件,off 方法移除,clear 清空所有 新建mitt文件夹,index.ts 派发 获取  如果在setup中派

    2024年02月11日
    浏览(69)
  • vue3探索——组件通信之事件总线

    Vue2.x使用EventBus进行组件通信,而Vue3.x推荐使用 mitt.js 。 比起Vue实例上的 EventBus , mitt.js 好在哪里呢?首先它足够小,仅有200bytes,其次支持全部事件的监听和批量移除,它还不依赖Vue实例,所以可以跨框架使用,React或者Vue,甚至jQuery项目都能使用同一套库。 使用yarn安装

    2024年02月12日
    浏览(45)
  • Vue面试题:如何使用事件总线进行组件间数据传输?

    问题: 假设你正在为一个大型企业级Vue应用程序编写代码,并且需要在多个组件之间传递数据。其中一个组件需要从另一个组件中获取数据,但是这个组件可能还没有加载完成。在这种情况下,你会采取什么措施来确保数据的可靠传输?请提供代码示例来解释你的解决方案。

    2023年04月09日
    浏览(40)
  • vue 设置全局鼠标移动事件

    要设置全局鼠标移动事件,可以使用 Vue 的 mixin 实现。在 mixin 中,我们可以使用 $on 方法监听 mousemove 事件,并在组件销毁时使用 $off 方法移除监听器,以避免内存泄漏。以下是一个例子: 这样,每个组件都可以使用全局鼠标移动事件,而不需要在每个组件中单独设置。

    2024年02月09日
    浏览(33)
  • vue3中事件总线mitt(第三方库mitt)

    1.安装mitt:npm install mitt -save 2. 新建EventBus.js文件: 3.发出事件的页面:bb.vue 4.接收事件的页面:dd.vue 5.点击bb页面按钮:

    2024年02月14日
    浏览(55)
  • IIS部署vue前端过程(含IIS及相关配置和安装),部署遇到的问题及报错(承接vueconfig.js全局配置环境变量,跨域问题)

    目录 一.IIS使用安装。 二.部署准备工作 三.部署前端(以vue为主) 四.问题与报错 1.HTTP 错误 404.0 - Not Found(需重写路由入口) 2.请求调用不了(需要重写请求地址) 3.地址显示undefined 第一步,打开“ 控制面板 ”,点击“ 网络和Internet ”。 第二步,点击左侧“ 程序 ”,然后点击

    2024年02月08日
    浏览(69)
  • 前端vue2 全局水印效果

    最近写项目遇到一个需求,全局显示水印,不管在哪个路由都要显示。 想要实现的效果: 新建shuiyin.js文件 main.js中全局注册

    2024年02月15日
    浏览(50)
  • Javascript 、Vue —— 禁止鼠标右键点击事件!

    工作中碰见了奇葩的需求(见多了,也就不奇葩了哈哈)—— 用户让加上鼠标右键点击事件 1、oncontextmenu 事件 定义 : oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。 HTML :  JavaScript :  JavaScript 中, 使用 addEventListener() 方法:   注意:  Internet Explorer 8 及更早

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包