Vue学习:8.v标签综合-强化版
通过前几节的认识和学习,我们掌握了常用v标签的用法,这一节再来巩固提高一下吧。
实例:成绩面板
实现功能:
主体由两大部分组成:表格+表单。这个表格可以显示多科成绩,并具有表头、删除以及底部统计功能。同时,在下方还有一个成绩输入表单,允许用户添加科目成绩,新添加的成绩会实时显示在表格中。
思路:
综合运用不同v标签的使用
代码:
html:
<div id="app">
<table>
<thead>
<tr>
<th>编号</th>
<th>科目</th>
<th>成绩</th>
<th>操作</th>
</tr>
</thead>
<!-- 表格主体部分:使用v-if/else切换不同显示-当表格为空时,显示“暂无数据” -->
<tbody v-if="list.length > 0">
<tr v-for="(item, index) in list" :key="item.id">
<td>{{ index+1 }}</td>
<td>{{ item.name }}</td>
<!-- 当成绩低于60分时,触发red类样式 -->
<td :class="{red: item.score < 60}">{{ item.score }}</td>
<!-- .prevent修饰符,阻止<a>标签的默认跳转行为 -->
<td><a @click.prevent="del(item.id)" href="">删除</a></td>
</tr>
</tbody>
<tbody v-else>
<tr>
<td colspan="5">暂无数据</td>
</tr>
</tbody>
<footer>
<tr>
<td colspan="5">
总分: {{ total }}
平均分:{{ mean }}
</td>
</tr>
</footer>
</table>
科目:<input v-model.trim="subject" placeholder="请输入科目">
<br>
分数:<input v-model.number="score" placeholder="请输入分数">
<br>
<button @click="add()">确认</button>
</div>
js:
<script>
const app = new Vue({
el: '#app',
data: {
list:[
{id: 1, name: '语文', score: 46},
{id: 7, name: '数学', score: 77},
{id: 13, name: '英语', score: 85},
{id: 14, name: '体育', score: 95},
],
subject: '',
score: ''
},
methods: {
del(id) {
console.log(id)
this.list = this.list.filter(item => item.id != id);
},
add() {
if(this.subject === ''){
alert('请输入科目名称!')
return
}
if(this.score > 100 || this.score < 0){
alert('请输入0-100内的成绩!')
return
}
// 数组的push()和unshift()都是在原数组的基础上操作
this.list.push({
id: +new Date(),
name: this.subject,
score: this.score
} )
}
},
computed: {
total(){
return this.list.reduce((sum,item) => sum + item.score, 0)
},
mean(){
if(this.list.length === 0){
return 0
}
return (this.total/this.list.length).toFixed(2)
}
}
})
</script>
css:
<style>
table{
width: 400px;
height: 300px;
border-collapse: collapse;
margin-bottom: 20px;
text-align: center;
}
th,td{
border:1px solid black;
}
.red{
color: red;
}
</style>
注意:
案例中还有很多小的注意,比如:当成绩小于60分时,成绩要高亮显示-这要求使用v-bind动态控制元素的样式;表单元素输入要求去首尾空格、字符转数字-要求使用v-model的修饰符trim和number;当成绩表格为空时要求显示“暂无数据”面板-可以使用v-if/else根据数据长度动态切换显示...
Vue学习:8.v标签综合-强化版的更多相关文章
- vue学习之template标签
HTML5提供的新标签,具有以下特性: 1.该元素天生display:none,同时模板元素内部内容也是隐藏的 2.位置任意,可以在<head>中,也可以在<body>或者&l ...
- vue学习笔记(二)——简单的介绍以及安装
学习编程需要的是 API+不断地练习^_^ Vue官网:https://cn.vuejs.org/ 菜鸟教程:http://www.runoob.com/vue2/vue-tutorial.html ...
- vue学习第一部
目录 基础操作 vue基础使用 步骤 vue的框架思想(mvvm) 显示数据 vue 常用指令 属性操作 事件绑定 操作样式 条件渲染指令 列表渲染指令 vue对象提供的属性功能 过滤器 计算和侦听属 ...
- Vue学习记录第一篇——Vue入门基础
前面的话 Vue中文文档写得很好,界面清爽,内容翔实.但文档毕竟不是教程,文档一上来出现了大量的新概念,对于新手而言,并不友好.个人还是比较喜欢类似于<JS高级程序设计>的风格,从浅入深, ...
- day 82 Vue学习二之vue结合项目简单使用、this指向问题
Vue学习二之vue结合项目简单使用.this指向问题 本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...
- day 81 Vue学习一之vue初识
Vue学习一之vue初识 本节目录 一 Vue初识 二 ES6的基本语法 三 Vue的基本用法 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 vue初识 vue称为渐进式js ...
- vue学习笔记(九)vue-cli中的组件通信
前言 在上一篇博客vue学习笔记(八)组件校验&通信中,我们学会了vue中组件的校验和父组件向子组件传递信息以及子组件通知父组件(父子组件通信),上一篇博客也提到那是对组件内容的刚刚开始,而本 ...
- vue学习笔记(十)路由
前言 在上一篇博客vue学习笔记(九)vue-cli中的组件通信内容中,我们学习组件通信的相关内容和进行了一些组件通信的小练习,相信大家已经掌握了vue-cli中的组件通信,而本篇博客将会带你更上一层 ...
- Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...
- Vue学习之vue-cli脚手架下载安装及配置
Vue学习之vue-cli脚手架下载安装及配置:https://www.cnblogs.com/clschao/articles/10650862.html 1. 先下载node.js,下载地址:ht ...
随机推荐
- 千万级可观测数据采集器--iLogtail代码完整开源
简介: 2022年6月29日,阿里云iLogtail开源后迎来首次重大更新,正式发布完整功能的iLogtail社区版.本次更新开源全部C++核心代码,该版本在内核能力上首次对齐企业版,开发者可以构建出 ...
- 如何避免JS内存泄漏?
简介: 很多开发者可能平时并不关心自己维护的页面是否存在内存泄漏,原因可能是刚开始简单的页面内存泄漏的速度很缓慢,在造成严重卡顿之前可能就被用户刷新了,问题也就被隐藏了,但是随着页面越来越复杂,尤 ...
- [PHP] 业务逻辑大内存占用的优化思路, yield 和 chunk
示例: header("content-type:text/html;charset=utf-8"); function readTxt() { $handle = fopen ...
- [PHP] Laravel 依赖注入使用不当引起的内存溢出
业务逻辑: 正常在 controller 方法的参数中注入某个类,方法中使用这个类时发生内存超出提示. 分析: 过往显示,正常使用依赖注入是不存在问题的,那么很有可能是哪里发生了循环引用,导致一直请求 ...
- UOS 开启 VisualStudio 远程调试 .NET 应用之旅
本文记录的是在 Windows 系统里面,使用 VisualStudio 2022 远程调试运行在 UOS 里面 dotnet 应用的配置方法 本文写于 2024.03.19 如果你阅读本文的时间距离 ...
- dotnet C# 使用 Vortice 支持 Direct2D1 离屏渲染
本文告诉大家如何使用 Vortice 进行 D2D 的离屏渲染功能,本文将在一个纯控制台无窗口的应用下,使用 Direct2D1 进行离屏绘制,将绘制结果保存为本地图片文件 本文属于使用 Vortic ...
- 3.Exporter概述
一.Exporter概述 所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如下所示,Prometheus通过轮询的方 ...
- vue-hbuilder打包-调取摄像头或上传图片
方法一: <input type="file" accept="image/*" capture="camera" > 方法二: ...
- 入门Semantic Kernel:OneApi集成与HelloWorld
引言 从这一章节开始正式进入我们的 Semantic Kernel 的学习之旅了. 什么是Semantic Kernel? Semantic Kernel是一个轻量级的开源框架,通过 Semantic ...
- Swift中的nil
Swift中的nil和OC中的nil不一样.OC中的nil表示不存在的对象,你无法给NSInteger类型的变量赋值nil,但是Swift中的nil表示不存在,可以给任何Optional的变量或者常量 ...