进入频道详情页面时,让全屏按钮处于聚集状态

使用vue-tv-focusable插件来实现焦点移动

注意: 进入页面时想让某个元素聚焦,要在 nextTick 回调中进行,否则会因页面未加载完全而导致焦点移动并不如你所愿。

<div class="item" ref="myDiv">s</div>
export default class Example1 extends Vue {
  created() {
    this.$nextTick(() => {
      this.$tv.requestFocus(this.$refs.myDiv)
    })
  }
}

知识点:如何获取通过v-for遍历出来的组件或元素的dom

在vue3中不能直接用ref来获取全部节点的数组,需要通过ref函数
1、声明一个空数组用来存放遍历出来的所有dom
let channelBtnRef: any[] = [] }

2、为遍历组件绑定ref函数
<channel-btn :btnInfo="item" :ref="setChannelBtnRef"></channel-btn>

3、把获取到的dom放到channelBtnRef数组中
channelBtnRef.push(el)

4、为channelBtnRef数组下标为0的元素(全屏按钮),添加焦点
proxy.$tv.requestFocus(channelBtnRef[0])

完整代码

import { getCurrentInstance } from 'vue'

setup() {
    const { proxy } = getCurrentInstance() as any
    let channelBtnRef: any[] = []
    const setChannelBtnRef = (el: any) => {
      if (el) {
        channelBtnRef.push(el)
      }
    }
    onMounted(() => {
      nextTick(() => {
        proxy.$tv.requestFocus(channelBtnRef[0])
      })
    })
    return { channelBtnData, setChannelBtnRef }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • blossom html css JavaScript 程序员入门的时候整理的一份学习笔记,见证了我的成长备份 标...
    blossom_绽放阅读 4,622评论 0 2
  • jquery介绍 jQuery是目前使用最广泛的javascript函数库 据统计,全世界排名前100万的网站,有...
    就是这么帅_567e阅读 5,049评论 0 0
  • 日常学习知识点总结(JS篇) 1、闭包: 闭包就是函数中的函数,里面的函数可以访问外面函数的变量,外面的变量是内部...
    依稀_Sting阅读 6,362评论 0 1
  • 页面展示 基本指令 v-text用于在页面中展示数据,可以简写为{{ }}的形式 {{msg}} <!--这两...
    羊烊羴阅读 5,386评论 0 0
  • 1.vue的原理? 关键词: 虚拟DOM树+访问器属性 解释一下:响应式原理? 当你把一个普通的 JavaScri...
    酷走天涯阅读 10,250评论 0 1

友情链接更多精彩内容