当前位置:首页 > VUE

vue实现整个模块循环

2026-02-23 05:09:21VUE

使用 v-for 循环渲染整个模块

在 Vue 中,可以通过 v-for 指令实现模块级别的循环渲染。假设需要循环渲染一个包含多个子组件的模块,可以这样实现:

<template>
  <div>
    <!-- 循环渲染模块 -->
    <div v-for="(item, index) in moduleList" :key="index">
      <!-- 模块内容 -->
      <h3>{{ item.title }}</h3>
      <p>{{ item.content }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      moduleList: [
        { title: '模块1', content: '内容1' },
        { title: '模块2', content: '内容2' },
        { title: '模块3', content: '内容3' }
      ]
    }
  }
}
</script>

循环渲染组件

如果需要循环渲染的是自定义组件,可以将组件放在 v-for 中:

vue实现整个模块循环

<template>
  <div>
    <custom-component 
      v-for="(item, index) in componentList" 
      :key="index"
      :title="item.title"
      :content="item.content"
    />
  </div>
</template>

<script>
import CustomComponent from './CustomComponent.vue'

export default {
  components: { CustomComponent },
  data() {
    return {
      componentList: [
        { title: '组件1', content: '内容1' },
        { title: '组件2', content: '内容2' },
        { title: '组件3', content: '内容3' }
      ]
    }
  }
}
</script>

动态生成模块数据

模块数据可以来自 API 请求或其他动态来源:

<template>
  <div>
    <div v-for="(module, index) in modules" :key="module.id">
      <h3>{{ module.name }}</h3>
      <p>{{ module.description }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      modules: []
    }
  },
  async created() {
    try {
      const response = await fetch('/api/modules')
      this.modules = await response.json()
    } catch (error) {
      console.error('获取模块数据失败:', error)
    }
  }
}
</script>

嵌套循环渲染复杂模块

对于嵌套结构的模块数据,可以使用嵌套的 v-for

vue实现整个模块循环

<template>
  <div>
    <div v-for="(section, sIndex) in nestedModules" :key="sIndex">
      <h2>{{ section.title }}</h2>
      <div v-for="(item, iIndex) in section.items" :key="iIndex">
        <h3>{{ item.title }}</h3>
        <p>{{ item.content }}</p>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      nestedModules: [
        {
          title: '主模块1',
          items: [
            { title: '子项1-1', content: '内容1-1' },
            { title: '子项1-2', content: '内容1-2' }
          ]
        },
        {
          title: '主模块2',
          items: [
            { title: '子项2-1', content: '内容2-1' },
            { title: '子项2-2', content: '内容2-2' }
          ]
        }
      ]
    }
  }
}
</script>

使用计算属性处理循环数据

对于需要处理的循环数据,可以使用计算属性:

<template>
  <div>
    <div v-for="item in processedItems" :key="item.id">
      <h3>{{ item.formattedTitle }}</h3>
      <p>{{ item.formattedContent }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, title: '原始标题1', content: '原始内容1' },
        { id: 2, title: '原始标题2', content: '原始内容2' }
      ]
    }
  },
  computed: {
    processedItems() {
      return this.items.map(item => ({
        ...item,
        formattedTitle: `处理后的${item.title}`,
        formattedContent: `处理后的${item.content}`
      }))
    }
  }
}
</script>

循环渲染带条件的模块

可以结合 v-ifv-for 实现条件渲染:

<template>
  <div>
    <template v-for="item in items">
      <div v-if="item.isActive" :key="item.id">
        <h3>{{ item.title }}</h3>
        <p>{{ item.content }}</p>
      </div>
    </template>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, title: '项目1', content: '内容1', isActive: true },
        { id: 2, title: '项目2', content: '内容2', isActive: false },
        { id: 3, title: '项目3', content: '内容3', isActive: true }
      ]
    }
  }
}
</script>

标签: 模块vue
分享给朋友:

相关文章

vue实现modal

vue实现modal

Vue 实现 Modal 弹窗组件 使用 Vue 实现 Modal 弹窗组件可以通过多种方式,包括原生 Vue 组件、第三方库或自定义指令。以下是几种常见方法: 原生 Vue 组件实现 创建一个基础…

vue实现书库

vue实现书库

Vue 实现书库功能 使用 Vue 构建书库功能需要结合前端框架和后端数据管理。以下是实现步骤和关键点: 项目初始化 使用 Vue CLI 或 Vite 初始化项目,安装 Vue Router 和状…

vue实现gridlayout

vue实现gridlayout

Vue 实现 Grid Layout 使用 CSS Grid 布局 CSS Grid 是一种强大的布局系统,可以直接在 Vue 组件的样式中使用。通过定义网格容器和网格项,可以快速实现复杂的布局结构。…

vue实现ftp

vue实现ftp

Vue 中实现 FTP 功能 Vue 本身是一个前端框架,无法直接操作 FTP 协议(FTP 通常需要后端支持)。以下是两种常见实现方式: 前端与后端配合实现 FTP 前端通过 API 与后端通信,…

vue 实现设置密码

vue 实现设置密码

Vue 实现设置密码功能 在 Vue 中实现设置密码功能通常涉及表单输入、验证和提交逻辑。以下是实现的基本步骤和代码示例。 创建密码表单组件 使用 Vue 的单文件组件(SFC)创建一个密码设置表单…

vue实现单词拼写

vue实现单词拼写

Vue 实现单词拼写功能 在 Vue 中实现单词拼写功能,可以通过数据绑定、事件处理和动态样式来实现。以下是一个完整的实现方案。 数据准备 定义一个包含单词和提示信息的数组,用于拼写练习:…