vue中实现增删改查

旧城等待, 2022-12-22 06:24 247阅读 0赞

vue中实现增删改查

一个正在努力爱好运动的前端
座右铭:越努力越幸运,越运动越健康,热爱编程,热爱运动。


文章目录

  • vue中实现增删改查
  • 小Demo
  • 添加
  • 删除
  • 修改
  • 查询
  • 全选单选

小Demo

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>vue实现表格的增删改查</title>
  6. <link rel="stylesheet" href="css/index.css">
  7. <script src="js/vue.js"></script>
  8. <script src="js/index.js"></script>
  9. </head>
  10. <body>
  11. <div id="table">
  12. <div class="add">
  13. <input type="text" placeholder="标题" v-model="input.name" />
  14. <input type="text" placeholder="发布人" v-model="input.user" />
  15. <input type="date" placeholder="发布时间" v-model="input.date" />
  16. <button :disabled="!input.name||!input.user||!input.date" @click="addItem()">新增</button>
  17. </div>
  18. <table cellpadding="0" cellspacing="0">
  19. <thead>
  20. <tr>
  21. <th><input type="checkbox" v-model="checkALL" @change="selectAllItem(v)" />序号</th>
  22. <th>标题</th>
  23. <th>发布人</th>
  24. <th>发布时间</th>
  25. <th>操作</th>
  26. </tr>
  27. </thead>
  28. <tbody>
  29. <tr v-for="(v,i) in items" :key="v.id">
  30. <td><input type="checkbox" v-model="v.check" @change="selectItem(v)" />{
  31. {v.id}}</td>
  32. <td>{
  33. {v.name}}</td>
  34. <td>{
  35. {v.user}}</td>
  36. <td>{
  37. {v.date}}</td>
  38. <td>
  39. <button :disabled="!v.check" @click="delItem(i)">删除</button>
  40. <button @click = "updataShow(v)">编辑</button>
  41. </td>
  42. </tr>
  43. </tbody>
  44. </table>
  45. <div id="layer" v-show="flag">
  46. <div class="mask">
  47. <div class="title">
  48. 编辑
  49. <span @click="flag = false">x</span>
  50. </div>
  51. <div class="content" >
  52. <input type="text" placeholder="标题" v-model="edit.name"/>
  53. <input type="text" placeholder="发布人" v-model="edit.user"/>
  54. <input type="date" placeholder="发布时间" v-model="edit.date"/>
  55. <button @click="updataItem()" :disabled="!edit.name||!edit.user||!edit.date">更新</button>
  56. <button @click="flag = false">取消</button>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </body>
  62. </html>
  63. window.onload = function () {
  64. var vm = new Vue({
  65. el: '#table',
  66. data: {
  67. input: {
  68. name: '',
  69. user: '',
  70. data: '',
  71. check: false,
  72. },
  73. items: [
  74. { name: '增删改查案例', user: '故心v', date: '2020-11-04', id: 1, check: false },
  75. { name: '增删改查案例(增改结合)', user: '故心vvv', date: '2020-11-11', id: 11, check: false }
  76. ],
  77. flag: false,//弹框显示与隐藏
  78. checkALL: false,//多选,
  79. //编辑的数据
  80. edit: {
  81. name: '',
  82. user: '',
  83. data: '',
  84. check: false,
  85. },
  86. },
  87. methods: {
  88. //添加数据
  89. addItem() {
  90. //每次添加的时候item最大的id+1 遍历出所有id
  91. var _id = Math.max(...this.items.map(v => v.id)) + 1;
  92. var { name, user, date, check } = this.input;
  93. this.items.push({
  94. name,
  95. user,
  96. date,
  97. id: _id,
  98. check
  99. });
  100. },
  101. //全选
  102. selectAllItem() {
  103. //当全选,遍历循环所有check变成 变成全选的状态
  104. this.items.forEach(v => { v.check = this.checkALL});
  105. },
  106. //单选
  107. selectItem(v) {
  108. //全部选中时 全选打上√
  109. this.checkALL = this.items.every(v => v.check);
  110. },
  111. //删除
  112. delItem(i) {
  113. //splice
  114. // this.splice(i, 1);
  115. //filter
  116. this.items = this.items.filter((v, index) => index != i);
  117. },
  118. //编辑弹层显示及回显
  119. updataShow(v) {
  120. this.flag = true;
  121. //数据回显
  122. this.edit={
  123. name:v.name,
  124. user:v.user,
  125. date:v.date,
  126. id:v.id,
  127. check:v.check
  128. }
  129. },
  130. //编辑更新
  131. updataItem() {
  132. //数据更改
  133. var { name, user, date, id, check } = this.edit;
  134. //循环遍历查找到并修改
  135. this.items.forEach((v, i) => {
  136. //查找到相对于的item
  137. if (v.id == id) {
  138. v.name = name;
  139. v.user = user;
  140. v.date = date,
  141. v.check = check;
  142. }
  143. })
  144. //编辑弹层关闭
  145. this.flag = false;
  146. }
  147. },
  148. })
  149. }

效果展示:

添加

其中一个为空时禁用
在这里插入图片描述
添加
在这里插入图片描述

删除

选中时可删除
在这里插入图片描述
在这里插入图片描述

修改

在这里插入图片描述
为空时禁止更新
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查询

  1. computer:{
  2. searchData(){
  3. //search为空时 retun items全部数据
  4. if(!search) return this.items;
  5. //模糊查询
  6. return this.items.filter(v=>{
  7. return v.name.includes(searchName);
  8. })
  9. }
  10. }

全选单选

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTU1ODU0_size_16_color_FFFFFF_t_70_pic_center 8

在这里插入图片描述
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,247人围观)

还没有评论,来说两句吧...

相关阅读