【前端】学生管理案例

142 阅读1分钟

通过学生管理案例,巩固vfor数据渲染、vmodel双向数据绑定以及事件修饰符等知识点。

需求分析:1. 渲染学生列表 2. 新增学生 3. 删除学生 4. 搜索学生

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		[v-cloak]{
			display: none;
		}
	</style>
</head>
<body>
	<div id="main" v-cloak>
		<table cellpadding="0" cellspacing="0">
			<tr>
				<td>学号</td>
				<td>姓名</td>
				<td>新增时间</td>
				<td>操作</td>
			</tr>
			<tr v-for="(item, i) in search(keywords)" :key="i">
				<td>{{item.id}}</td>
				<td>{{item.name}}</td>
				<td>{{item.time}}</td>
				<td><a @click.prevent="del(i)">删除</a></td>
			</tr>
			<tr>
				<td><input type="text" placeholder="请输入学号" v-model="id" /></td>
				<td><input type="text" placeholder="请输入姓名" v-model="name" /></td>
				<td><input type="text" placeholder="搜索学生姓名" v-model="keywords" /></td>
				<td><input type="button" value="新增" @click="add"/></td>
			</tr>
		</table>
	</div>

	<!-- 安装Vue.js -->
	<script src="https://unpkg.com/vue@2.6.14/dist/vue.min.js"></script>
	<script>
		var vm = new Vue  ({
			el: '#main',
			data: {
				id: '',
				name: '',
				keywords: '',
				list: [{
					id: 1,
					name: '小明',
					time: new Date()
				}, {
					id: 2,
					name: '小红',
					time: new Date()
				}, {
					id: 3,
					name: '小刚',
					time: new Date()
				}]
			},
			methods: {
				add() {
					var stu = {
						id: this.id,
						name: this.name,
						time: new Date()
					}
					this.list.push(stu)
					this.id = this.name = ''
				},
				del(i) {
					console.log(i)
					this.list.splice(i, 1)
				},
				search(keywords) {
					var newList = []
					this.list.forEach(item => {
						if (item.name.indexOf(keywords) != -1) {
							newList.push(item)
						}
					})
					return newList
				}
			}
		})
	</script>
</body>
</html>

运行代码:

image.png