Vue的route-view子页面调用父页面的函数详解

yizhihongxing

当我们在使用Vue的路由时,有些情况下我们需要在子页面中调用父页面中的函数,这种需求是非常常见的。本文将讲解如何在Vue中通过 this.$parent$refs 这两种方法来实现子页面调用父页面函数的详解。

方法一:this.$parent

this.$parent 可以获取到当前实例的父级,因此可以通过该属性来调用父级中的方法。

示例1:父子页面共用一个参数

假设我们有一个父页面 Foo,其中有一个方法 handleFoo,父页面中有一个 router-view,其子页面是 BarBar 中需要使用 handleFoo 方法。

  1. 在父页面中定义 handleFoo 方法
<template>
  <div>
     <router-view />
  </div>
</template>

<script>
export default {
  data(){
    return{
      foo: 'bar'
    }
  },
  methods:{
    handleFoo(){
      console.log(this.foo)
    }
  }
}
</script>
  1. 在子页面中通过 $parent 获取父元素并调用方法
<template>
  <button @click="$parent.handleFoo">点击</button>
</template>

示例2:父子页面不共用参数

假设现在父页面中有一个 handleParent 方法,需要使用 this.$router.push() 来跳转页面,子页面中需要调用该方法。

  1. 在父页面中定义 handleParent 方法
<template>
  <div>
     <router-view />
  </div>
</template>

<script>
export default {
  methods:{
    handleParent(){
      this.$router.push('/')
    }
  }
}
</script>
  1. 在子页面中通过 $parent 获取父元素并调用方法
<template>
  <button @click="$parent.handleParent">跳转到首页</button>
</template>

方法二:$refs

$refs 可以获取到 Vue 实例子组件的 DOM 节点或者获取到子组件中的属性或方法。

示例:通过 $refs 获取父元素实例并调用方法

假设我们有一个父页面 Foo,其中有一个方法 handleFoo,父页面中有一个 router-view,其子页面是 BarBar 中需要使用 handleFoo 方法。

  1. 在父页面中定义 handleFoo 方法
<template>
  <div>
     <router-view />
  </div>
</template>

<script>
export default {
  data(){
    return{
      foo: 'bar'
    }
  },
  methods:{
    handleFoo(){
      console.log(this.foo)
    }
  }
}
</script>
  1. 在子页面中获取父元素的实例并调用方法
<template>
  <button @click="handleParent">点击</button>
</template>

<script>
export default {
    methods:{
        handleParent() {
            this.$parent.$refs.Foo.handleFoo()
        }
    }
}
</script>

在上述代码中,this.$parent.$refs.Foo 中的 Foo 是指父页面中的组件名,即 <Foo ref="Foo"></Foo>。通过使用 $parent$refs,我们可以轻松获取父元素的实例并调用其方法。

至此为止,就讲完了 Vue 的 route-view 子页面调用父页面的函数的攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue的route-view子页面调用父页面的函数详解 - Python技术站

(1)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue中遇到的坑之变化检测问题(数组相关)

    1. 问题背景 在Vue中,当数组相关数据更新时,会对应的更新DOM元素,但是在更新数组时,我们需要注意到一些坑点。 2. 变化检测方式 Vue采用的是基于 JavaScript 对象的变化检测机制,在更新一个对象时,Vue 会遍历它的每一个属性,并且使用 Object.defineProperty 把这个属性转为 getter 和 setter。 3. 数…

    Vue 2023年5月27日
    00
  • vue项目添加多页面配置的步骤详解

    针对“vue项目添加多页面配置的步骤详解”的完整攻略,以下是具体步骤: 1. 安装 vue-cli,并创建项目 首先,你需要在电脑上安装好 vue-cli,这里以 vue-cli 3.x 为例,使用如下命令进行安装: npm install -g @vue/cli 安装完成后,可以使用 vue –version 检查一下是否成功安装。接着,使用 vue c…

    Vue 2023年5月28日
    00
  • Vue常用的修饰符及应用场景解读

    下面是“Vue常用的修饰符及应用场景解读”的完整攻略。 修饰符简介 Vue.js通过修饰符的方式,为指令提供了多种功能扩展。接下来介绍Vue常用的修饰符及应用场景。 .stop 修饰符.stop可以阻止事件冒泡,即在事件被触发后该元素的父元素不会再次触发该事件。 例如,以下代码段中,div的点击事件不会触发li的点击事件: <div @click=&q…

    Vue 2023年5月28日
    00
  • 基于Vue3+TypeScript的全局对象的注入和使用详解

    下面是关于“基于Vue3+TypeScript的全局对象的注入和使用详解”的详细攻略。 一、概述 在Vue3中,全局对象的注入方式发生了很大变化。在Vue2中,我们可以使用Vue.prototype来挂载一些全局对象和方法,在全局范围内使用。但是在Vue3中,这样的方式已经不再支持了。为了解决这个问题,Vue3提出了一个新的解决方案 – 全局注入(Globa…

    Vue 2023年5月28日
    00
  • vue组件 非单文件组件的使用步骤

    使用vue组件的方法有两种:单文件组件和非单文件组件。 非单文件组件的使用步骤如下: 定义组件 定义非单文件组件有两种方法,一种是使用Vue.component()函数,另一种是使用全局的组件注册方法。 使用Vue.component()函数: Vue.component(‘my-component’, { template: ‘<div>{{ …

    Vue 2023年5月28日
    00
  • v-for循环中使用require/import关键字引入本地图片的几种方式

    关于“v-for循环中使用require/import关键字引入本地图片的几种方式”的攻略,我可以为您做出以下解释。 一、使用require导入图片 在Vue项目中,如果我们想要引入一张本地图片启用,我们可以使用require命令将图片导入。我们可以通过如下方法将图片导入到Vue程序中: <template> <div> <im…

    Vue 2023年5月28日
    00
  • vue如何清除地址栏参数

    清除地址栏参数是指在使用 Vue.js 进行路由跳转时,能够清除地址栏中的参数,保证进入页面时的地址栏参数为空,避免出现错误。本文将详细介绍如何实现 Vue.js 清除地址栏参数的方法及其示例。 方法一:使用 beforeRouteUpdate 钩子函数 beforeRouteUpdate 钩子函数可以在组件重用时调用,我们可以在这个钩子函数里面清除地址栏参…

    Vue 2023年5月28日
    00
  • 解决vue下载后台传过来的乱码流的问题

    解决vue下载后台传过来的乱码流的问题可以分为以下几个步骤: 确认后台接口返回的数据是正确编码的,比如UTF-8。 在vue中通过axios等网络请求库获取数据时,设置responseType为’blob’,这样能保证我们得到的数据是二进制的。 通过FileReader读取二进制数据,并转换为String。 创建Blob对象,将转换后的String数据存入该…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部