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

当我们在使用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实现表单验证功能

    下面是关于“Vue实现表单验证功能”的完整攻略: 一、准备工作 在开始实现表单验证之前,我们需要先引入Vue和 Vue-Resource两个依赖库。在html文件中引入它们的CDN链接 <!– Vue.js –> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js…

    Vue 2023年5月27日
    00
  • vue如何动态绑定img的src属性(v-bind)

    在Vue中,可以使用v-bind指令动态绑定HTML元素的属性。对于img标签的src属性,我们也可以使用v-bind进行动态绑定。 具体实现步骤如下: 绑定数据到Vue实例的data中 首先,需要将图片的URL地址存储在Vue实例的data中,作为动态绑定的数据。例如: <template> <div> <img :src=&…

    Vue 2023年5月28日
    00
  • vue 实现模糊检索并根据其他字符的首字母顺序排列

    实现模糊检索并根据其他字符的首字母顺序排列是前端开发中比较常见的需求之一,在 Vue 中也有很好的实现方式。 1.实现模糊检索功能 实现模糊检索的核心点是在数据源上进行筛选。假设我们有一个表格数据源: [ { name: ‘张三’, age: 21 }, { name: ‘李四’, age: 22 }, { name: ‘王五’, age: 23 }, { …

    Vue 2023年5月27日
    00
  • vue如何将base64流数据转成pdf文件并在新页面打开

    下面是将base64流数据转成pdf文件并在新页面打开的详细攻略: 1. 将base64流数据转成blob数据 首先,需要在vue组件中定义一个方法,将base64流数据转成blob数据。 function base64ToBlob(base64Data, contentType) { contentType = contentType || ”; con…

    Vue 2023年5月27日
    00
  • 使用async await 封装 axios的方法

    下面是使用async/await封装axios的方法的完整攻略: 1. 前置要求 在使用async/await封装axios之前,需要先了解以下内容: Promise机制 axios的基本使用方法和API async/await用法 2. 封装axios 封装axios的目的是为了方便在多个地方使用相同的网络请求配置和错误处理,避免重复书写。下面是一个简单的…

    Vue 2023年5月28日
    00
  • vue 事件获取当前组件的属性方式

    获取当前组件的属性是Vue中常见的操作之一。下面是Vue中获取当前组件属性的完整攻略。 方式一:$event对象 可以通过$event对象来获取当前组件属性。$event是事件回调函数的第一个参数,它是原生DOM事件对象的包装。我们可以从这个对象中获取各种属性。 例如,我们有一个input组件: <input type="text"…

    Vue 2023年5月28日
    00
  • 详解Vue如何监测数组的变化

    详解Vue如何监测数组的变化。Vue对数组的变化是有所监测的,包括以下操作:push、pop、shift、unshift、splice、sort、reverse。下面我们对这些操作进行分析: push和pop Vue对于数组的push、pop操作,可以通过观察数组的length属性来监测数组的变化。当进行push或pop操作时,Vue会检测到数组的lengt…

    Vue 2023年5月28日
    00
  • Vue收集表单数据和过滤器总结

    Vue收集表单数据和过滤器总结 本文主要介绍Vue中如何收集表单数据和使用过滤器进行数据处理。 收集表单数据 v-model指令 v-model指令可以实现双向数据绑定,将表单元素的值与Vue实例的数据属性进行绑定。当表单元素的值发生变化时,对应的数据属性也会更新。 示例一: <template> <div> <input ty…

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