Vue中,一个组件调用其他组件的方法(非父子组件)
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中,一个组件调用其他组件的方法(非父子组件)相关推荐
- Vue中父子及非父子组件之间的通信方法
Vue中父子及非父子组件之间的通信方法 父子组件之间的通信方法 父级->子级通信 (依赖单向数据绑定+props实现) Vue.component('Father', { //注册了含有data ...
- Vue 学习06——Vue父子组件通信、非父子组件通信1
目录 ㋀㋊ ✎ 父子组件间通信(Communication) ◆ 组件间通信 父组件向子组件传递数据 ➬ ① 前言 ② demo ➬ 还有一种形式叫做插槽 ◆ 子组件向父组件传递数据 ① 前言 ② ...
- Vue非父子组件传值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.非父子组件传值 二.事件总线 2.$attrs / listeners VueX是笔者认为最稳定的非父子传值的方法 ...
- vue调用函数怎么传参_Vue(非)父子组件的传值以及方法调用
1.vue父组件给子组件传值的方法 子组件中通过props接收传值 props:{ username:{ type:String, default:"" } } 2.vue父组件调 ...
- vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)
1. 子组件向父组件传值 子组件: <template><div>子组件:<span>{{childValue}}</span><!-- 定义一个 ...
- vue中style的scoped属性这样用,修改第三方组件iview 或 element 样式
vue中style的scoped属性这样用,修改第三方组件iview 或 element 样式 文章目录 vue中style的scoped属性这样用,修改第三方组件iview 或 element 样式 ...
- vue 2 使用 Bus.js 实现兄弟 (非父子) 组件通信 简单案例
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用pro ...
- Vue非父子组件通信的几种方式
文章目录 1.provide和inject 1.1基本使用 1.2如何处理响应式数据 2.全局事件总线mitt库 2.1安装mitt库,封装eventbus.js工具类 2.2在其中一个组件中触发事件 ...
- Vue组件化开发--组件通信方式-父传子、子传父、非父子组件传值
一.概述 以脚手架搭建的Vue项目为笔记背景. 如果将所有的代码逻辑全部放到一个组件中,代码是非常的臃肿和难以维护的. 并且在真实开发中,可能会有更多的内容和代码逻辑,对于扩展性和可维护性来说都是非常 ...
最新文章
- 右键缺少open terminal选项的解决方法
- squid cache_peer 参数详解
- 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
- 007_JDK的Comparator接口
- MATLAB与图像处理(四):将图片序列转化为视频文件,将视频文件转化为图片
- 若川诚邀你加源码共读群,每周一起学源码
- 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器
- java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized
- 这里有个古老的车站:三年只为一人开
- c语言如何打印unicode字符,如何在C ++中打印Unicode字符?
- Json学习总结(8)——经过多方调研,最终还是决定禁用FastJson
- np.array的shape的区别
- mysql怎么从1开始递增
- _Linux学习笔记
- 堪称神级的Spring Boot手册,从基础入门到实战进阶
- 混合线性模型(linear mixed models)
- 易优cms eyoucms登陆后台提示验证码错误
- 改了!教育部核准这所985高校更改简称!网友:华科大终于来了
- 刮刮卡 vue canvas
- 【考研经验】双非二战山东大学计算机技术初试第二经验贴