关于多种题型中的题目锚点问题

本文探讨了Vue应用中子组件ojTopicNav和ojTopicSetTopicList的数据不同步问题,并通过$emit和parent-child通信进行解决。同时,介绍了如何绑定锚点ID并利用anchor()方法实现点击题号锚定相应内容的交互效果。
摘要由CSDN通过智能技术生成

1. 问题描述

组件描述图

① 题目锚点导航栏(ojTopicNav)与题目列表(ojTopicSetTopicList)被同一父组件引用,但数据不同步

题目锚点导航栏(ojTopicNav)与题目列表(ojTopicSetTopicList)

  ②最后应达到点击题目锚点导航栏的题号,即可锚定相应题目的效果

最终实现效果图

 2. 解决方式

(1) 数据不同步问题 --> 同为子组件之间的通信

由于 data(题目数据)通过接口从 ojTopicSetTopicList(题目列表)组件接入,

故需将 data 通过 this.$emit() 方式传给父组件 topicSetDetail

再由父组件 topicSetDetail data 传给子组件 ojTopicNav(题目锚点导航栏),

实现两个子组件之间的数据通信。

 

 

 子组件给父组件传值:vue子组件给父组件传值

父组件向子组件传值:vue中父组件向子组件传值

(2) 实现锚点跳转

① 绑定id

 ② 使用anchor()方法 

(3)anchor()方法效果如下:

    /*锚链接跳转*/
    anchor(anchorName) {
      /*找到锚点*/
      let anchorElement = document.getElementById(anchorName)
      /*如果对应id的锚点存在,就跳转到锚点*/
      if (anchorElement) {
        this.$nextTick(() => {
         anchorElement.scrollIntoView(true)({
           behavior: 'smooth',
         })
        })
        console.log('看看anchorName', anchorName)
        console.log('看看anchorElement', anchorElement)
      }
    },

看看 anchorName 和 anchorElement :

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值