当前位置:首页 > VUE

vue实现成绩显示

2026-01-22 15:41:43VUE

Vue 实现成绩显示功能

数据准备

在 Vue 中创建一个数组或对象来存储成绩数据,可以包含学生姓名、科目、分数等信息。例如:

data() {
  return {
    students: [
      { name: '张三', math: 85, english: 90, science: 78 },
      { name: '李四', math: 92, english: 88, science: 85 },
      { name: '王五', math: 78, english: 82, science: 90 }
    ]
  }
}

模板渲染

使用 Vue 的模板语法 v-for 循环遍历成绩数据,并在表格中显示:

<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>数学</th>
      <th>英语</th>
      <th>科学</th>
    </tr>
  </thead>
  <tbody>
    <tr v-for="student in students" :key="student.name">
      <td>{{ student.name }}</td>
      <td>{{ student.math }}</td>
      <td>{{ student.english }}</td>
      <td>{{ student.science }}</td>
    </tr>
  </tbody>
</table>

计算属性

如果需要计算总分或平均分,可以使用 Vue 的计算属性:

computed: {
  studentsWithTotal() {
    return this.students.map(student => {
      return {
        ...student,
        total: student.math + student.english + student.science,
        average: (student.math + student.english + student.science) / 3
      }
    })
  }
}

样式优化

通过 Vue 的 :class:style 动态绑定样式,例如根据分数高低显示不同颜色:

<td :style="{ color: student.math >= 90 ? 'green' : student.math >= 60 ? 'black' : 'red' }">
  {{ student.math }}
</td>

组件化

如果成绩显示功能较复杂,可以将其拆分为单独的组件:

Vue.component('grade-table', {
  props: ['students'],
  template: `
    <table>
      <!-- 表格内容 -->
    </table>
  `
})

数据交互

通过 API 获取成绩数据,使用 axiosfetch

methods: {
  async fetchGrades() {
    try {
      const response = await axios.get('/api/grades')
      this.students = response.data
    } catch (error) {
      console.error('获取成绩失败:', error)
    }
  }
},
created() {
  this.fetchGrades()
}

过滤与排序

添加过滤或排序功能,例如按总分排序:

computed: {
  sortedStudents() {
    return [...this.students].sort((a, b) => {
      const totalA = a.math + a.english + a.science
      const totalB = b.math + b.english + b.science
      return totalB - totalA
    })
  }
}

响应式更新

使用 Vue 的响应式特性,当成绩数据变化时自动更新界面:

methods: {
  updateGrade(name, subject, score) {
    const student = this.students.find(s => s.name === name)
    if (student) {
      Vue.set(student, subject, score)
    }
  }
}

完整示例

将以上功能整合到一个完整的 Vue 实例中:

new Vue({
  el: '#app',
  data() {
    return {
      students: []
    }
  },
  computed: {
    sortedStudents() {
      return [...this.students].sort((a, b) => {
        const totalA = a.math + a.english + a.science
        const totalB = b.math + b.english + b.science
        return totalB - totalA
      })
    }
  },
  methods: {
    async fetchGrades() {
      try {
        const response = await axios.get('/api/grades')
        this.students = response.data
      } catch (error) {
        console.error('获取成绩失败:', error)
      }
    }
  },
  created() {
    this.fetchGrades()
  }
})

vue实现成绩显示

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

相关文章

vue实现简单的弹窗

vue实现简单的弹窗

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

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed: {…

vue实现表格多行修改

vue实现表格多行修改

实现多行编辑表格 在Vue中实现表格的多行编辑功能,可以通过以下方法完成。这里以Element UI的表格组件为例,但思路适用于其他UI库或原生实现。 数据准备 定义表格数据和编辑状态管理变量:…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{ 'b…

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖拽…