• vue小案例实现模糊查询、删除列表、添加列表


    vue小案例实现模糊查询、删除列表、添加列表,本案例用于快速复习vue基本使用,vue指令。

    bootstrap 用的是bootstrap4,在官网直接下载导入即可(v4.6.1)

    vue 用的是 vue-2.6.12.js

    demo 用到的知识点:

    • 创建 vue 基本实例
    • v-for 循环渲染表格数据
    • 状态渲染为“开关”,用的 bootstrap4 的 表单下的 Switches 组件。
    • 全局过滤器格式化时间
    • 添加学生功能
    • 点击删除对应的列表
    • 回车提交 input 输入框,(按键修饰符:keyup.enter)
    • 输入关键字模糊查询(名字和年龄都能查询)

    完整 html 代码:

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8" />
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    6. <title>Documenttitle>
    7. <link rel="stylesheet" href="./lib/bootstrap.css" />
    8. <style>
    9. :root {
    10. font-size: 13px;
    11. }
    12. body {
    13. padding: 8px;
    14. }
    15. style>
    16. head>
    17. <body>
    18. <div id="app">
    19. <div class="card">
    20. <h5 class="card-header">添加和查询学生h5>
    21. <div class="card-body">
    22. <form class="form-inline" @submit.prevent>
    23. <div class="input-group mb-2 mr-sm-2">
    24. <div class="input-group-prepend">
    25. <div class="input-group-text">学生名字div>
    26. div>
    27. <input type="text" class="form-control" v-model="sname" @keyup.enter="addstu" />
    28. div>
    29. <button type="submit" class="btn btn-primary mb-2" @click="addstu">添加学生button>
    30. form>
    31. <form class="form-inline" @submit.prevent>
    32. <div class="input-group mb-2 mr-sm-2">
    33. <div class="input-group-prepend">
    34. <div class="input-group-text">输入关键字div>
    35. div>
    36. <input type="text" class="form-control" v-model="guanjian" @keyup.enter="getstu" />
    37. div>
    38. <button type="submit" class="btn btn-primary mb-2" @click="getstu">查询学生button>
    39. form>
    40. div>
    41. div>
    42. <table class="table table-bordered table-striped mt-2">
    43. <thead>
    44. <tr>
    45. <th>#th>
    46. <th>学生名字th>
    47. <th>年龄th>
    48. <th>状态th>
    49. <th>创建时间th>
    50. <th>操作th>
    51. tr>
    52. thead>
    53. <tbody>
    54. <tr v-for="(item,i) in list" :key="item.id">
    55. <td>{{ item.id }}td>
    56. <td>{{ item.name }}td>
    57. <td>{{ item.age }}td>
    58. <td>
    59. <div class="custom-control custom-switch">
    60. <input type="checkbox" class="custom-control-input" :id="item.id" v-model="item.status">
    61. <label class="custom-control-label" :for="item.id" v-if="item.status">已开启label>
    62. <label class="custom-control-label" :for="item.id" v-else>已禁用label>
    63. div>
    64. td>
    65. <td>{{ item.Datetime | datafamat }}td>
    66. <td>
    67. <a href="#" @click.prevent="sdelet(item.id,i)">删除a>
    68. td>
    69. tr>
    70. tbody>
    71. table>
    72. div>
    73. <script src="./lib/vue-2.6.12.js">script>
    74. <script>
    75. // 用全局过滤器格式化时间
    76. Vue.filter('datafamat',(str)=> {
    77. const dt = new Date(str)
    78. const y = dt.getFullYear()
    79. const m = padtime(dt.getMonth())
    80. const d = padtime(dt.getDay())
    81. const hh = padtime(dt.getHours())
    82. const mm = padtime(dt.getMinutes())
    83. const ss = padtime(dt.getSeconds())
    84. return ` ${y}-${m}-${d} ${hh}:${mm}:${ss} `
    85. })
    86. function padtime(n){
    87. return n > 9 ? n: "0" + n
    88. }
    89. const Vm = new Vue({
    90. el:'#app',
    91. data:{
    92. nextid:5,
    93. sname:'',
    94. guanjian:'',
    95. list:[
    96. { id:1,name:'张三',age:'18',status:true,Datetime:new Date() },
    97. { id:2,name:'张4',age:'18',status:true,Datetime:new Date() },
    98. { id:3,name:'张5',age:'20',status:false,Datetime:new Date() },
    99. { id:4,name:'张6',age:'19',status:true,Datetime:new Date() }
    100. ]
    101. },
    102. methods: {
    103. addstu() {
    104. if(!this.sname) return alert('学生名字不能为空')
    105. this.list.push({
    106. id:this.nextid,
    107. name:this.sname,
    108. status:true,
    109. Datetime:new Date()
    110. })
    111. this.sname = ''
    112. this.nextid++
    113. },
    114. sdelet(e,i) {
    115. // this.list.splice(i,1)
    116. this.list.splice(i,1)
    117. },
    118. getstu() {
    119. this.list = this.list.filter((p)=> {
    120. console.log(p)
    121. return p.name.indexOf(this.guanjian) !== -1 || p.age.indexOf(this.guanjian) !== -1
    122. })
    123. console.log(this.list)
    124. }
    125. }
    126. })
    127. script>
    128. body>
    129. html>

    导入放入 html 文件中,导入bootstrap4,导入vue,即可直接游览器打开运行。

    完整打包的代码可以到gitee下载:

    vue小案例实现模糊查询删除列表添加列表: vue小案例实现模糊查询、删除列表、添加列表

    到github下载: 

    858399075/vuedemo · GitHub

    运行演示:

     输入名字添加学生,添加成功自动清空输入框的值:

    输入关键可以模糊查询:

    点击删除会直接删除对应的列表:

  • 相关阅读:
    springboot+shiro+swagger+redis+vue+element完成权限系统
    使用aop结合redis进行方法参数的签名等验证
    JupyterServer配置
    探索OLED透明屏的优缺点:引领科技未来的革命性突破
    8种结构型设计模式对比
    处理一些数据
    速卖通,国际站测评补单用什么环境,买家账号不会被风控,F号
    IDEA与Git
    测试apk-异常管控NetTraffic攻击者开发
    使用php 获取时间今天、明天、昨天时间戳的详解
  • 原文地址:https://blog.csdn.net/qq_61950936/article/details/126325832