当前位置:首页 > VUE

vue实现视频类型筛选

2026-02-25 01:00:31VUE

实现视频类型筛选功能

在Vue中实现视频类型筛选功能,可以通过以下方法完成:

数据准备 定义视频数据和筛选选项数据

data() {
  return {
    videos: [
      { id: 1, title: '视频1', type: 'movie' },
      { id: 2, title: '视频2', type: 'tvshow' },
      { id: 3, title: '视频3', type: 'documentary' }
    ],
    filterOptions: [
      { value: 'all', label: '全部' },
      { value: 'movie', label: '电影' },
      { value: 'tvshow', label: '电视剧' },
      { value: 'documentary', label: '纪录片' }
    ],
    selectedType: 'all'
  }
}

筛选逻辑 使用计算属性实现筛选功能

computed: {
  filteredVideos() {
    if (this.selectedType === 'all') {
      return this.videos
    }
    return this.videos.filter(video => video.type === this.selectedType)
  }
}

模板部分 在模板中添加筛选控件和视频列表展示

<template>
  <div>
    <select v-model="selectedType">
      <option 
        v-for="option in filterOptions" 
        :value="option.value"
        :key="option.value"
      >
        {{ option.label }}
      </option>
    </select>

    <ul>
      <li v-for="video in filteredVideos" :key="video.id">
        {{ video.title }}
      </li>
    </ul>
  </div>
</template>

进阶实现方式

使用自定义筛选组件 创建可复用的筛选组件

vue实现视频类型筛选

Vue.component('video-filter', {
  props: ['options', 'value'],
  template: `
    <select @change="$emit('input', $event.target.value)" :value="value">
      <option v-for="option in options" :value="option.value">
        {{ option.label }}
      </option>
    </select>
  `
})

在父组件中使用

<video-filter 
  :options="filterOptions" 
  v-model="selectedType"
/>

响应式筛选优化

添加搜索功能 扩展筛选功能,支持多条件筛选

data() {
  return {
    searchQuery: '',
    // 其他数据...
  }
},
computed: {
  filteredVideos() {
    let result = this.videos
    if (this.selectedType !== 'all') {
      result = result.filter(video => video.type === this.selectedType)
    }
    if (this.searchQuery) {
      const query = this.searchQuery.toLowerCase()
      result = result.filter(video => 
        video.title.toLowerCase().includes(query)
      )
    }
    return result
  }
}

添加搜索框

vue实现视频类型筛选

<input 
  type="text" 
  v-model="searchQuery" 
  placeholder="搜索视频..."
/>

性能优化建议

对于大型视频列表,可以考虑使用虚拟滚动技术优化渲染性能。可以使用第三方库如vue-virtual-scroller。

添加防抖处理搜索输入,避免频繁触发筛选计算:

import { debounce } from 'lodash'

methods: {
  handleSearch: debounce(function(query) {
    this.searchQuery = query
  }, 300)
}

在模板中使用:

<input 
  type="text" 
  @input="handleSearch($event.target.value)" 
  placeholder="搜索视频..."
/>

标签: 类型视频
分享给朋友:

相关文章

h5 实现视频通话

h5 实现视频通话

H5 实现视频通话的技术方案 H5(HTML5)实现视频通话主要依赖WebRTC(Web Real-Time Communication)技术。以下是实现步骤和关键代码示例: 获取用户媒体设备权限…

vue webrtc实现视频

vue webrtc实现视频

Vue 与 WebRTC 实现视频通信 WebRTC(Web Real-Time Communication)是一种支持浏览器实时音视频通信的技术。结合 Vue.js 框架,可以快速构建视频通话应用。…

vue实现编辑视频

vue实现编辑视频

Vue 实现视频编辑功能 在 Vue 中实现视频编辑功能通常需要结合 HTML5 的 <video> 元素和第三方库。以下是实现的基本方法和步骤: 安装必要依赖 使用 video.js…

vue实现视频弹幕

vue实现视频弹幕

Vue 实现视频弹幕功能 实现视频弹幕功能需要结合视频播放器和弹幕渲染逻辑,以下是具体实现方法: 视频播放器集成 使用第三方视频播放器库如video.js或原生video标签作为基础: <v…

vue如何实现视频通话

vue如何实现视频通话

Vue 实现视频通话的关键步骤 使用 WebRTC 技术 WebRTC 是浏览器原生支持的实时通信技术,无需插件即可实现视频通话。Vue 中可通过以下方式集成: 调用 navigator.media…

Vue实现换视频背景

Vue实现换视频背景

Vue实现动态视频背景 安装video.js和vue-video-player依赖 npm install video.js vue-video-player 在组件中引入并注册 import {…