1.学习vue时做的一个小案例,本身案例很简单,经过优化又加些比较常用的功能,比如在添加图书前,先判断编号是否存在,并提示给用户,并且编号文本框只能输入数字等等优化。
2.使用到数组数据,方法,监视,挂载钩子,数据是本地数据,方法实现了大部分的功能函数,监视属性实现动态检查数据的合法性,挂载实现了计时器的触发,每秒查询本地时间并且做了格式化,主要是修改与添加图书时,自动调用本地的时间日期。


-案例所有代码在文章末尾-

案例功能-增删改查

  • 1.效果图
  • 2.添加与修改图书
  • 3.删除图书
  • 4.查询图书
  • 5.全部代码

1.效果图

静态图

动态图


2.添加与修改图书

这个vue方法实现增加与修改的图书,一个方法解决增加与修改图书,实现代码复用

 addbook: function () {if (this.flag) {// changetime;this.books.some((item) => {if (item.id == this.idmsg) {item.date = this.dates;item.name = this.namemsg;this.tipmsg = ""return true;}})} else {arr = {id: this.idmsg,name: this.namemsg,date: this.dates};this.books.push(arr);this.tipmsg = ""}},

3.删除图书

根据findIndex方法找到需要删除的数组索引,通过splice方法删除(splice是在源数组修改)

    del: function (id) {var index = this.books.findIndex(function (item) {return item.id == id})this.books.splice(index, 1)},

4.查询图书

通过vue的watch监视属性,动态监视数据的变化,数据一变化就调用函数方法,来查询数组的编号ID是否存在,如果存在或不存在都会通过信息提示给用户。

 idmsg: function (val) {this.idmsg = val.replace(/\D/g, "")if (this.flag) {this.tipmsg = ""} else {this.books.some((item) => {if (item.id == val) {this.tipmsg = "ID已存在"return true} else if (val == "") {this.tipmsg = ""} else {this.tipmsg = "ID可用"}})}}

5.全部代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>a {text-decoration: none;}.left {float: left;}.right {float: right;}caption {font-weight: bold;font-size: 24px;}.clearfix::after {display: block;content: "";height: 0;clear: both;}table {width: 600px;margin: auto;background-color: #f4faed;/* background-color: #247624; */border: rebeccapurple solid 1px;}th,td {text-align: center;width: 150px;border: rebeccapurple solid 1px;}th {background-color: #e3f1d1;}.tail {margin: 20px auto;width: 600px;font-weight: bold;font-size: 20px;/* border: 1px solid brown; */}#submit {display: none;}.submit {font-weight: bold;margin: 20px auto;width: 600px;margin-top: 15px;/* background-color: aliceblue; */}.submit input:nth-of-type(1) {text-align: center;width: 100px;}.submit input:nth-of-type(2) {width: 150px;text-align: center;}.submit span {margin-left: 18px;}.submit .go {margin-left: 8px;width: 80px;}.crrent {display: none;}.show {display: block;}.tipmsg {font-size: 12px;color: brown;width: 240px;line-height: 14px;margin-top: 5px;text-align: center;/* text-indent: 20px; */}</style>
</head><body><div id="app"><table><caption>图书管理</caption><thead><tr><th>编号</th><th>书名</th><th>日期</th><th>设置</th></tr></thead><tbody><tr :key="item.id" v-for="item in books"><td>{{item.id}}</td><td>{{item.name}}</td><td>{{item.date}}</td><td><a href="#" @click.prevent="change(item.id,item.name)">修改</a><span> | </span> <a href="#"@click="del(item.id)">删除</a></td></tr></tbody></table><div class="submit" :class="crrent"><span>编号:</span><input type="text" v-model.trim="idmsg" :disabled="flag" placeholder="请输入数字"><span>书名:</span><input type="text" v-model="namemsg"><input type="button" class="go" v-model="tip" @click="addbook"><input type="button" class="go" value="取消" @click="cancle"><div class="tipmsg">{{tipmsg}}</div></div><div class="tail clearfix"><div class="left"> <span>图书数量:</span><span style="color: brown;font-size: 25px;">{{books.length}}</span></div><div class="right"> <a href="#" @click="sub">添加图书(add)</a></div></div><!-- {{dates}}<input type="button" value="123" @click="changetime()"> --></div><script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script><script>new Vue({el: "#app",data() {return {dates: "",tipmsg: "",flag: false,idmsg: "",namemsg: "",tip: "",crrent: "crrent",books: [{id: "1",name: "三国演义",date: "9-1日15:35",},{id: "2",name: "水浒传",date: "9-2日15:35"},{id: "3",name: "红楼梦",date: "9-5日15:35"},{id: "4",name: "西游记",date: "9-19日15:35"},]}},mounted() {this.changetime();},methods: {changetime: function () {// var ret = ""setInterval(() => {var dates = new Date()this.dates = (dates.getMonth() + 1) + "月" + dates.getDate() + "日" + dates.getHours() + ":" + dates.getMinutes() + ":" + dates.getSeconds()}, 1000)},sub: function () {this.idmsg = "";this.flag = falsethis.crrent = "show"this.tip = "添加图书"this.namemsg = "";this.tipmsg = "";},cancle: function () {this.crrent = "crrent"},change: function (id, name) {this.flag = true;// console.log(this.flag);this.crrent = "show"this.tip = "修改图书"this.idmsg = id;this.namemsg = name;this.tipmsg = "";},addbook: function () {if (this.flag) {// changetime;this.books.some((item) => {if (item.id == this.idmsg) {item.date = this.dates;item.name = this.namemsg;this.tipmsg = ""return true;}})} else {arr = {id: this.idmsg,name: this.namemsg,date: this.dates};this.books.push(arr);this.tipmsg = ""}},del: function (id) {var index = this.books.findIndex(function (item) {return item.id == id})this.books.splice(index, 1)},},watch: {idmsg: function (val) {this.idmsg = val.replace(/\D/g, "")if (this.flag) {this.tipmsg = ""} else {this.books.some((item) => {if (item.id == val) {this.tipmsg = "ID已存在"return true} else if (val == "") {this.tipmsg = ""} else {this.tipmsg = "ID可用"}})}}}})</script>
</body></html>

vue案例-图书管理相关推荐

  1. [Vue.js] 基础 -- 综合案例 -- 图书管理

    综合案例 – 图书管理 补充知识(数组相关API) 变异方法(修改原有数据) push() pop() shift() unshift() splice() sort() reverse() 替换数组 ...

  2. Vue 实现 图书管理 案例

    案例效果 案例思路 图书列表 实现静态列表效果 基于数据实现模板效果 处理每行的操作按钮 添加图书 实现表单的静态效果 添加图书表单域数据绑定 添加按钮事件绑定 实现添加业务逻辑 修改图书 修改信息填 ...

  3. vue实现图书管理案例

    需求:         1. 动态在页面中展示图书列表:         2. 在输入框中输入图书名称,按回车键实现图书添加功能(图书名称不能为空):         3. 点击"删除&qu ...

  4. Django案例——图书管理案例

    文章目录 项目开始前 App的建立和路由分配 数据库的建立与连接 模型映射(建立表格) 视图函数 最终的效果图 项目代码连接见:链接:https://pan.baidu.com/s/1mRYMVZkp ...

  5. 数据库开发案例—图书管理系统设计

    目录 第1关 数据库表设计-图书表 本关任务:创建图书管理数据库系统的图书表. 数据库整体设计 代码实现 第2关 数据库表设计-读者表 代码实现 第3关 数据库表设计-关联表 代码实现 第1关 数据库 ...

  6. 前端学习(1222):综合案例图书管理1

  7. Vue 图书管理案例

    这篇文章主要为大家详细介绍了vue.js实现图书管理功能,具有一定的参考价值, 感兴趣的小伙伴们可以参考一下 <!DOCTYPE html> <html lang="en& ...

  8. 026_图书管理案例

    1. 新建一个名为Books的动态Web工程 1.1. 添加gson-2.8.5.jar 1.2. 编写Book.java package com.bjbs.action;import java.io ...

  9. 案例:图书管理——补充知识(数组相关API)||补充知识(数组响应式变化)

    案例:图书管理 Vue数组操作 1.变异方法:会影响数组的原始数据的变化. 2.替换数组:不会影响原始的数组数据,而是形成一个新的数组. <!DOCTYPE html> <html ...

最新文章

  1. 「NLP」ALBERT:更轻更快的NLP预训练模型
  2. 【Kubernetes】Kubernetes的Service外部访问方式:NodePort和LoadBalancer
  3. python打开界面是什么样的-python学习笔记(图形用户界面)
  4. TorgoiseGit配置ssh密钥
  5. 【统计学习】多元统计分析
  6. 使用python来批量抓取网站图片
  7. SpringMVC学习笔记
  8. Android SlidingMenu插件的使用
  9. Java工程师必备技能
  10. Python数据可视化之Excel气泡图
  11. playframe 项目搭建
  12. Vue中的join(),reverse()与 split()函数
  13. ubuntu挂载共享文件
  14. 滴滴又出事!33项问题被查,程维再次致歉
  15. UITextFiled 简介
  16. 八大排序算法—源代码(c语言)
  17. 自动化测试工程师,自动化测试项目老是误报?怎么解决?(详细总结)
  18. Linux学习(一)虚拟机安装linux资源,linux目录结构,购买阿里云服务器远程登陆linux,下载安装并使用Xshell与Xftp
  19. Hbase——练习4
  20. 微信小程序按钮添加背景

热门文章

  1. sift是图像匹配的非常经典的算法
  2. C++课程设计之密码加密
  3. moon服务器 zerotier_在Server上搭建Zerotier的Moon节点;加快访问速度
  4. 滚动字幕怎么制作,视频的滚动字幕如何制作?
  5. 打印服务的乱码故障处理
  6. 内卷?谈谈AI算法人才职业发展
  7. word文档打开密码解密怎么解
  8. NoClassDefFoundError解决方案
  9. 一文详解文本语义相似度的研究脉络和最新进展
  10. python电梯题_OO——电梯作业总结