当前位置:首页 > VUE

vue实现品牌列表

2026-02-18 01:38:25VUE

使用Vue实现品牌列表

在Vue中实现品牌列表可以通过以下方法完成,涵盖数据绑定、组件化、API交互等核心功能。

数据准备与绑定

创建Vue实例或组件时,定义品牌数据数组,通常从API获取或本地模拟。使用v-for指令渲染列表。

<template>
  <div>
    <ul>
      <li v-for="brand in brands" :key="brand.id">
        {{ brand.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      brands: [
        { id: 1, name: 'Nike' },
        { id: 2, name: 'Adidas' }
      ]
    }
  }
}
</script>

动态获取品牌数据

通过axiosfetch从后端API获取品牌数据,通常在createdmounted生命周期钩子中发起请求。

vue实现品牌列表

<script>
import axios from 'axios';

export default {
  data() {
    return {
      brands: []
    }
  },
  async created() {
    try {
      const response = await axios.get('/api/brands');
      this.brands = response.data;
    } catch (error) {
      console.error('获取品牌数据失败:', error);
    }
  }
}
</script>

添加品牌筛选功能

通过计算属性或方法实现品牌搜索筛选,结合v-model绑定输入框。

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

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

使用组件化拆分

将品牌列表项抽离为独立组件,提升代码复用性。

vue实现品牌列表

<template>
  <div>
    <brand-item 
      v-for="brand in brands" 
      :key="brand.id" 
      :brand="brand"
    />
  </div>
</template>

<script>
import BrandItem from './BrandItem.vue';

export default {
  components: { BrandItem },
  data() {
    return {
      brands: [
        { id: 1, name: 'Nike' },
        { id: 2, name: 'Adidas' }
      ]
    }
  }
}
</script>

品牌项组件示例

创建BrandItem.vue文件,接收brand prop并渲染单个品牌信息。

<template>
  <div class="brand-item">
    <h3>{{ brand.name }}</h3>
  </div>
</template>

<script>
export default {
  props: {
    brand: {
      type: Object,
      required: true
    }
  }
}
</script>

添加分页功能

结合后端分页API,使用分页组件(如el-pagination)控制数据加载。

<template>
  <div>
    <ul>
      <li v-for="brand in brands" :key="brand.id">
        {{ brand.name }}
      </li>
    </ul>
    <el-pagination
      @current-change="handlePageChange"
      :current-page="currentPage"
      :page-size="pageSize"
      :total="totalBrands"
    />
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      totalBrands: 0,
      brands: []
    }
  },
  methods: {
    async handlePageChange(page) {
      this.currentPage = page;
      await this.fetchBrands();
    },
    async fetchBrands() {
      const response = await axios.get('/api/brands', {
        params: { page: this.currentPage, size: this.pageSize }
      });
      this.brands = response.data.items;
      this.totalBrands = response.data.total;
    }
  }
}
</script>

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

相关文章

vue tag实现

vue tag实现

Vue 标签实现方法 在 Vue 中实现标签功能可以通过多种方式完成,常见场景包括动态标签生成、标签输入框、标签管理等。以下是几种典型实现方案: 动态标签列表渲染 使用 v-for 指令渲染标签数组…

vue 实现视频

vue 实现视频

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

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…

vue 动画实现

vue 动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要分为内置组件和第三方库集成。 使用 Vue 内置过渡组件 Vue 的 <transition> 和 <transiti…

vue 实现音乐

vue 实现音乐

Vue 实现音乐播放功能 在 Vue 中实现音乐播放功能,可以通过 HTML5 的 <audio> 元素或第三方库如 howler.js 来实现。以下是两种方法的详细步骤: 使用 HTM…

vue删除实现

vue删除实现

Vue 删除功能的实现方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 方法一:使用数组的 splice 方法 通过索引删除数组中的元素,适用于列表渲染的场景。 methods: {…