当前位置:首页 > 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.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
  }
}

添加搜索框

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

性能优化建议

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

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

import { debounce } from 'lodash'

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

在模板中使用:

vue实现视频类型筛选

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

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

相关文章

vue实现播放视频

vue实现播放视频

vue实现播放视频的方法 使用Vue实现视频播放可以通过HTML5的<video>标签或第三方库完成。以下是几种常见方法: 使用原生HTML5 video标签 在Vue组件模板中直接使…

vue实现视频功能

vue实现视频功能

Vue 实现视频播放功能 使用 Vue 实现视频功能可以通过原生 HTML5 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见方法: 使用原生 HTML5 &…

vue实现短视频功能

vue实现短视频功能

Vue 实现短视频功能的关键步骤 前端框架与核心库选择 使用Vue 3组合式API开发,搭配video.js或原生<video>标签实现播放器。移动端适配推荐vue-touch或@vueu…

react项目如何导入视频

react项目如何导入视频

在React项目中导入视频的方法 使用HTML5的<video>标签 在React组件中可以直接使用HTML5的<video>标签来嵌入视频文件。将视频文件放在项目的publi…

react视频预览第一帧如何

react视频预览第一帧如何

实现视频第一帧预览的方法 使用react-player库 安装react-player库后,通过light属性启用预览模式,默认显示视频第一帧作为预览图: import ReactPlaye…

react实现短视频

react实现短视频

React 实现短视频功能 在 React 中实现短视频功能通常涉及视频播放、列表展示、交互操作等核心模块。以下为关键实现方法: 视频播放组件 使用 react-player 或原生 HTML5 v…