当前位置:首页 > VUE

vue实现筛选电影

2026-01-17 21:23:27VUE

使用Vue实现电影筛选功能

在Vue中实现电影筛选功能可以通过以下方法完成:

数据准备 创建包含电影信息的数组,每个电影对象包含标题、类型、评分等属性:

data() {
  return {
    movies: [
      { title: '电影A', genre: '动作', rating: 4.5 },
      { title: '电影B', genre: '喜剧', rating: 3.8 },
      { title: '电影C', genre: '科幻', rating: 4.2 }
    ],
    filters: {
      genre: '',
      minRating: 0
    }
  }
}

计算属性筛选 使用计算属性根据筛选条件过滤电影:

computed: {
  filteredMovies() {
    return this.movies.filter(movie => {
      const genreMatch = !this.filters.genre || 
                        movie.genre === this.filters.genre
      const ratingMatch = movie.rating >= this.filters.minRating
      return genreMatch && ratingMatch
    })
  }
}

模板渲染 在模板中显示筛选控件和结果:

<div>
  <select v-model="filters.genre">
    <option value="">所有类型</option>
    <option value="动作">动作</option>
    <option value="喜剧">喜剧</option>
  </select>

  <input type="number" v-model="filters.minRating" min="0" max="5" step="0.1">

  <ul>
    <li v-for="movie in filteredMovies" :key="movie.title">
      {{ movie.title }} - {{ movie.genre }} ({{ movie.rating }})
    </li>
  </ul>
</div>

进阶实现方案

使用Vuex管理状态 对于大型应用,可以使用Vuex集中管理电影数据和筛选条件:

// store.js
export default new Vuex.Store({
  state: {
    movies: [...],
    filters: {
      genre: '',
      minRating: 0
    }
  },
  getters: {
    filteredMovies: state => {
      return state.movies.filter(/* 筛选逻辑 */)
    }
  }
})

添加更多筛选条件 扩展筛选功能支持多条件查询:

filters: {
  genres: [],
  yearRange: [1990, 2020],
  keywords: ''
}

性能优化 对于大量数据,考虑使用虚拟滚动或分页加载:

<virtual-list :size="50" :remain="8">
  <div v-for="movie in filteredMovies" :key="movie.id">
    <!-- 电影项内容 -->
  </div>
</virtual-list>

样式与交互增强

添加过渡效果 使用Vue的过渡系统让筛选结果平滑变化:

<transition-group name="fade" tag="div">
  <div v-for="movie in filteredMovies" :key="movie.id">
    <!-- 内容 -->
  </div>
</transition-group>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

响应式设计 确保筛选界面在不同设备上表现良好:

vue实现筛选电影

.filter-container {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

@media (max-width: 768px) {
  .filter-container {
    flex-direction: column;
  }
}

以上实现方案可根据具体需求进行调整和扩展,核心思路是通过Vue的响应式系统和计算属性实现动态筛选功能。

标签: 电影vue
分享给朋友:

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

使用 Vue 实现简单弹窗 组件基础结构 创建一个名为 Modal.vue 的组件文件,包含模板、脚本和样式部分: <template> <div class="mod…

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue实现字母添加排序

vue实现字母添加排序

实现字母添加排序的方法 在Vue中实现字母添加排序功能,可以通过以下步骤完成: 创建Vue实例并定义数据 new Vue({ el: '#app', data: { letters…

vue实现批量

vue实现批量

Vue 实现批量操作的方法 在 Vue 中实现批量操作通常涉及选择多个项目并执行统一处理,例如批量删除、批量更新等。以下是几种常见实现方式: 表格多选批量操作 使用 el-table 配合复选框实现…

vue实现前端

vue实现前端

Vue 实现前端的核心方法与步骤 安装 Vue 项目 使用 Vue CLI 或 Vite 创建项目。Vue CLI 是传统构建工具,Vite 是新一代轻量级工具。 npm init vue@la…

vue 简单实现

vue 简单实现

以下是 Vue 的简单实现示例,涵盖基础模板、数据绑定、方法及生命周期: 基础模板与数据绑定 <div id="app"> <p>{{ message }}</p&…