当前位置:首页 > VUE

vue实现成绩显示

2026-02-23 06:34:35VUE

Vue 实现成绩显示功能

数据准备与绑定

在 Vue 中,成绩数据通常以数组或对象形式存储在组件的 data 属性中。例如:

data() {
  return {
    scores: [
      { name: '数学', score: 90 },
      { name: '语文', score: 85 },
      { name: '英语', score: 92 }
    ]
  }
}

模板渲染

使用 v-for 指令循环渲染成绩列表,并通过 v-bind: 动态绑定样式或类名:

<ul>
  <li v-for="(item, index) in scores" :key="index">
    {{ item.name }}: {{ item.score }}
  </li>
</ul>

条件样式

根据成绩高低显示不同颜色(如优秀为绿色,及格为黄色):

vue实现成绩显示

<li 
  v-for="(item, index) in scores" 
  :key="index"
  :style="{ color: item.score >= 90 ? 'green' : item.score >= 60 ? 'orange' : 'red' }"
>
  {{ item.name }}: {{ item.score }}
</li>

计算属性

通过计算属性处理复杂逻辑,例如计算平均分:

computed: {
  averageScore() {
    const sum = this.scores.reduce((total, item) => total + item.score, 0);
    return (sum / this.scores.length).toFixed(2);
  }
}

组件化

将成绩列表封装为可复用的子组件:

vue实现成绩显示

// ScoreItem.vue
<template>
  <div :class="['score-item', scoreClass]">
    <span>{{ name }}</span>
    <span>{{ score }}</span>
  </div>
</template>

<script>
export default {
  props: ['name', 'score'],
  computed: {
    scoreClass() {
      return this.score >= 90 ? 'excellent' : this.score >= 60 ? 'pass' : 'fail';
    }
  }
}
</script>

动态更新

通过方法实现成绩的动态添加或修改:

methods: {
  addScore() {
    this.scores.push({ name: '新科目', score: 0 });
  },
  updateScore(index, newScore) {
    this.$set(this.scores, index, { ...this.scores[index], score: newScore });
  }
}

完整示例

结合以上内容实现的完整组件:

<template>
  <div>
    <h3>成绩单</h3>
    <ScoreItem 
      v-for="(item, index) in scores" 
      :key="index"
      :name="item.name"
      :score="item.score"
    />
    <p>平均分: {{ averageScore }}</p>
    <button @click="addScore">添加科目</button>
  </div>
</template>

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

export default {
  components: { ScoreItem },
  data() {
    return {
      scores: [
        { name: '数学', score: 90 },
        { name: '语文', score: 85 },
        { name: '英语', score: 92 }
      ]
    };
  },
  computed: {
    averageScore() {
      const sum = this.scores.reduce((total, item) => total + item.score, 0);
      return (sum / this.scores.length).toFixed(2);
    }
  },
  methods: {
    addScore() {
      this.scores.push({ name: '新科目', score: 0 });
    }
  }
};
</script>

标签: 成绩vue
分享给朋友:

相关文章

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以使…

vue实现递归

vue实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据(如菜单、评论列表、文件目录等)。以下是具体实现方法: 定义递归组件 通过 name 选项让组件可以递归调用自身:…

vue实现帖子

vue实现帖子

Vue 实现帖子功能 使用 Vue 实现帖子功能需要结合前端框架和后端数据交互,以下是实现的关键步骤和代码示例。 帖子列表展示 创建帖子列表组件,使用 v-for 渲染帖子数据,通过 axios…

vue router 实现

vue router 实现

Vue Router 的实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的核心实现方式。 安装 Vue Router 通过…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…