Vue中,一个组件调用其他组件的方法(非父子组件)

场景——B页面(组件)想调用 A页面(组件)中的方法;但是两个页面(组件)毫无关联(刷新 A的数据)。

方式一:引用式

1、当前组件引入将要调用方法所属的组件

这里我的当前组件要调用OrderDetail这个组件的check()方法

import Detail from "./detail.vue";

该方法定义在OrderDetail的methods属性中

2、当前组件通过该组件methods属性直接调用该方法
// 也可以调用 created、data等
Detail.methods.check();

方式二:vuex

  • 使用 VueX 定义一个属性 ,然后在A页面 定义一个计算属性(computed) 再把 vuex 的属性返回给它,
    再监听这个计算属性,发生变化就调用你要执行的方法。

1、src/store/index.js

//  Vuex   全局
state: { tableStatus:false  }mutations:{  changeStatus(state,status) {  //  重复赋值state.tableStatus = status;},
}

2、被使用组件- A 页面(组件)

 //  A 页面(组件)
computed: {  status() {  //  计算属性return this.$store.state.tableStatus; //  Vuex 中定义的属性}
},
watch:{status() {this.getTableList();  //   需要调用的方法}
},

3、使用触发页面-B 页面(组件)

然后就是在B 页面定义一个点击事件(举例),重新给 Vuex中的属性赋值就行了

//  B页面(组件)
closePage() {let status = this.$store.state.tableStatus;   // 重新赋值this.$store.commit("changeStatus", !status);
},

方式三:使用事件总线eventBus定义全局事件

1、src/main.js

 window.eventBus = new Vue();

2、触发页面-B组件/发布事件

window.eventBus.$emit('setFeaturesData', data)  // 带参数
window.eventBus.$emit('setFeaturesData')  // 不带参数

3、接收页面-A组件/订阅事件

    window.eventBus.$on('setFeaturesData', (data)=>{ // 带参数this.hoveredFeatures = [data]this.onClick()})mounted() {this.getTableData()window.eventBus.$on('setFeaturesData', ()=>{ // 不带参数this.getTableData()})},

4、移除事件

window.eventBus.$off('setFeaturesData')

Vue中,一个组件调用其他组件的方法(非父子组件)相关推荐

  1. Vue中父子及非父子组件之间的通信方法

    Vue中父子及非父子组件之间的通信方法 父子组件之间的通信方法 父级->子级通信 (依赖单向数据绑定+props实现) Vue.component('Father', { //注册了含有data ...

  2. Vue 学习06——Vue父子组件通信、非父子组件通信1

    目录 ​㋀㋊ ✎ 父子组件间通信(Communication) ◆ 组件间通信 父组件向子组件传递数据 ➬  ① 前言 ② demo ➬ 还有一种形式叫做插槽 ◆ 子组件向父组件传递数据 ① 前言 ② ...

  3. Vue非父子组件传值

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.非父子组件传值 二.事件总线 2.$attrs / listeners VueX是笔者认为最稳定的非父子传值的方法 ...

  4. vue调用函数怎么传参_Vue(非)父子组件的传值以及方法调用

    1.vue父组件给子组件传值的方法 子组件中通过props接收传值 props:{ username:{ type:String, default:"" } } 2.vue父组件调 ...

  5. vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)

    1. 子组件向父组件传值 子组件: <template><div>子组件:<span>{{childValue}}</span><!-- 定义一个 ...

  6. vue中style的scoped属性这样用,修改第三方组件iview 或 element 样式

    vue中style的scoped属性这样用,修改第三方组件iview 或 element 样式 文章目录 vue中style的scoped属性这样用,修改第三方组件iview 或 element 样式 ...

  7. vue 2 使用 Bus.js 实现兄弟 (非父子) 组件通信 简单案例

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用pro ...

  8. Vue非父子组件通信的几种方式

    文章目录 1.provide和inject 1.1基本使用 1.2如何处理响应式数据 2.全局事件总线mitt库 2.1安装mitt库,封装eventbus.js工具类 2.2在其中一个组件中触发事件 ...

  9. Vue组件化开发--组件通信方式-父传子、子传父、非父子组件传值

    一.概述 以脚手架搭建的Vue项目为笔记背景. 如果将所有的代码逻辑全部放到一个组件中,代码是非常的臃肿和难以维护的. 并且在真实开发中,可能会有更多的内容和代码逻辑,对于扩展性和可维护性来说都是非常 ...

最新文章

  1. 右键缺少open terminal选项的解决方法
  2. squid cache_peer 参数详解
  3. 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
  4. 007_JDK的Comparator接口
  5. MATLAB与图像处理(四):将图片序列转化为视频文件,将视频文件转化为图片
  6. 若川诚邀你加源码共读群,每周一起学源码
  7. 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器
  8. java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized
  9. 这里有个古老的车站:三年只为一人开
  10. c语言如何打印unicode字符,如何在C ++中打印Unicode字符?
  11. Json学习总结(8)——经过多方调研,最终还是决定禁用FastJson
  12. np.array的shape的区别
  13. mysql怎么从1开始递增
  14. _Linux学习笔记
  15. 堪称神级的Spring Boot手册,从基础入门到实战进阶
  16. 混合线性模型(linear mixed models)
  17. 易优cms eyoucms登陆后台提示验证码错误
  18. 改了!教育部核准这所985高校更改简称!网友:华科大终于来了
  19. 刮刮卡 vue canvas
  20. 【考研经验】双非二战山东大学计算机技术初试第二经验贴

热门文章

  1. 使用 VSCode 在 Mac 上配置 C/C++ 调试环境
  2. 区块链溯源:实现更高效的供应链管理,减少信任成本
  3. 7-4 职工排序题 (18分)
  4. Altium designer如何快速定义板子外形(直角和圆角)
  5. 游戏开发的最佳编程语言及免费引擎推荐
  6. 算法竞赛入门经典(第二版)第二章教材代码
  7. 重点检查重要部分的代码检查清单
  8. Leetcode 279. 完全平方数
  9. 搜狗云输入法移植到linux平台的想法
  10. 创建微信小程序的几种方式