Vue 祖孙方法调用 祖父级方法在孙级调用 祖孙传参

有需求子元素的子元素(孙子级别的元素)获取到的值要传递给祖父级

祖父级代码:

  • 新增方法:provide ( ) 与生命周期同级
data() {
	……
},
// 与生命周期同级
provide() {
  return {
    //子组件调用的名字:对应的方法(当前页面,祖父级元素的方法)
    openList: this.openList
  };
},
mounted() {
	……
},
methods: {
  openList(type) {
	// 逻辑代码
	console.log(type);
  },
}

孙级别代码:

  • 定义祖父级设置好的参数 - 与生命周期同级
name: "waterPieCom",

// 导入祖父级定义的名称
inject: ["openList"],
data(){
	...
}
mounted() {
	// 任意位置调用,与当前文件下的调用相同
	this.openList(type)
}
传递参数
  • 若需传递参数则在祖父级页面方法中进行赋值即可
data() {
  return {
  	//初始化定义数据
	value:''
  }
},
methods: {

  openList(type) {
	// 赋值
	this.value = type
  },
}
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue中,可以通过使用事件总线或者Vuex来实现隔代组件方法的相互调用。 1. 事件总线(Event Bus):可以创建一个新的Vue实例作为事件总线,在祖父组件中定义方法并通过事件总线触发,然后在孙子组件中监听并调用方法。 在祖父组件中: ```js // 创建事件总线 const bus = new Vue(); export default { methods: { grandfatherMethod() { // 在需要调用的地方触发事件 bus.$emit('grandfather-method'); } } } ``` 在孙子组件中: ```js export default { created() { // 监听事件并调用相应的方法 bus.$on('grandfather-method', () => { this.grandsonMethod(); }); }, methods: { grandsonMethod() { // 孙子组件的方法逻辑 } } } ``` 2. Vuex:如果你已经在项目中使用了Vuex,可以将需要调用方法放在Vuex的actions中,然后在祖父组件和孙子组件中都可以通过dispatch来触发该方法。 在Vuex的actions中: ```js export default { actions: { grandfatherMethod() { // 祖父组件的方法逻辑 } } } ``` 在祖父组件中: ```js import { mapActions } from 'vuex'; export default { methods: { ...mapActions(['grandfatherMethod']), someMethod() { this.grandfatherMethod(); } } } ``` 在孙子组件中: ```js import { mapActions } from 'vuex'; export default { methods: { ...mapActions(['grandfatherMethod']), anotherMethod() { this.grandfatherMethod(); } } } ``` 这样,祖父组件和孙子组件都可以通过dispatch触发Vuex的actions中的方法,实现隔代方法的相互调用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值