当前位置:首页 > VUE

vue实现品牌列表

2026-01-17 09:05:15VUE

实现品牌列表的Vue方案

使用Vue 3组合式API

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索品牌" />
    <ul>
      <li v-for="brand in filteredBrands" :key="brand.id">
        {{ brand.name }} - {{ brand.origin }}
      </li>
    </ul>
  </div>
</template>

<script setup>
import { ref, computed } from 'vue'

const brands = ref([
  { id: 1, name: 'Nike', origin: 'USA' },
  { id: 2, name: 'Adidas', origin: 'Germany' }
])

const searchQuery = ref('')

const filteredBrands = computed(() => {
  return brands.value.filter(brand => 
    brand.name.toLowerCase().includes(searchQuery.value.toLowerCase())
  )
})
</script>

使用Vue 2选项式API

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索品牌" />
    <ul>
      <li v-for="brand in filteredBrands" :key="brand.id">
        {{ brand.name }} - {{ brand.origin }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      brands: [
        { id: 1, name: 'Nike', origin: 'USA' },
        { id: 2, name: 'Adidas', origin: 'Germany' }
      ],
      searchQuery: ''
    }
  },
  computed: {
    filteredBrands() {
      return this.brands.filter(brand => 
        brand.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

从API获取品牌数据

<script setup>
import { ref, onMounted } from 'vue'

const brands = ref([])

onMounted(async () => {
  const response = await fetch('https://api.example.com/brands')
  brands.value = await response.json()
})
</script>

添加分页功能

const currentPage = ref(1)
const itemsPerPage = 5

const paginatedBrands = computed(() => {
  const start = (currentPage.value - 1) * itemsPerPage
  return filteredBrands.value.slice(start, start + itemsPerPage)
})

使用UI组件库优化显示

<template>
  <el-table :data="filteredBrands" style="width: 100%">
    <el-table-column prop="name" label="品牌名称"></el-table-column>
    <el-table-column prop="origin" label="国家"></el-table-column>
  </el-table>
</template>

品牌卡片式布局

<template>
  <div class="brand-grid">
    <div v-for="brand in filteredBrands" :key="brand.id" class="brand-card">
      <img :src="brand.logo" :alt="brand.name" />
      <h3>{{ brand.name }}</h3>
    </div>
  </div>
</template>

<style>
.brand-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 20px;
}
.brand-card {
  border: 1px solid #eee;
  padding: 15px;
  text-align: center;
}
</style>

vue实现品牌列表

标签: 品牌列表vue
分享给朋友:

相关文章

vue前端实现登录

vue前端实现登录

实现登录功能的基本流程 使用Vue实现登录功能需要结合前端框架和后端API交互。以下是一个典型的实现方案: 安装必要依赖 确保项目已安装axios用于HTTP请求: npm install axi…

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直…

vue实现按卡片轮播

vue实现按卡片轮播

实现卡片轮播的基本思路 在Vue中实现卡片轮播可以通过结合v-for指令和动态样式绑定完成。核心是维护一个当前显示卡片的索引,通过CSS过渡效果实现平滑切换。 基础实现步骤 模板部分 使用v-fo…

vue前端分页怎么实现

vue前端分页怎么实现

前端分页实现方法 在Vue中实现前端分页通常涉及数据分割和页面控制逻辑。以下是常见的实现方式: 使用计算属性分页 通过计算属性对数据进行切片处理: computed: { paginatedD…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。 安装依…

vue实现录音文件播放

vue实现录音文件播放

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