1. <!DOCTYPE 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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script src="./lib/vue.js"></script>
    9. </head>
    10. <body>
    11. <div id="app">
    12. <div>
    13. <label>
    14. id:<input type="text" v-model="id">
    15. </label>
    16. <label>
    17. <!-- @keyup.enter="add" 松开键盘,并且按下回车就会触发add方法 -->
    18. name:<input type="text" v-model="name" @keyup.enter="add">
    19. </label>
    20. <label>
    21. <input type="button" value="添加" @click="add">
    22. </label>
    23. <label>
    24. <input type="text" v-model="keywords">
    25. <input type="button" value="搜索" @click="serach(keywords)">
    26. </label>
    27. </div>
    28. <table border="1" style="margin-top: 20px;">
    29. <thead>
    30. <tr>
    31. <th>id</th>
    32. <th>name</th>
    33. <th>ctime</th>
    34. <th>操作</th>
    35. </tr>
    36. </thead>
    37. <tbody>
    38. <tr v-for="(item, index) in serach(keywords)" :key="index">
    39. <td>{{item.id}}</td>
    40. <td>{{item.name}}</td>
    41. <td>{{item.ctime}}</td>
    42. <td><a href="" @click.prevent="del(item.id)">删除</a></td>
    43. </tr>
    44. </tbody>
    45. </table>
    46. </div>
    47. <script>
    48. // 自定义全局键盘修饰符
    49. Vue.config.keyCodes.f2= 113;
    50. var vm = new Vue({
    51. el: '#app',
    52. data: {
    53. id: "",
    54. name: "",
    55. keywords: "",
    56. list: [
    57. { id: 1, name: "奔驰", ctime: new Date() },
    58. { id: 2, name: "宝马", ctime: new Date() },
    59. ]
    60. },
    61. methods: {
    62. add() {
    63. var obj = { id: this.id, name: this.name, ctime: new Date() };
    64. this.list.push(obj);
    65. this.id = '';
    66. this.name = '';
    67. },
    68. del(id) {
    69. // 根据id查找索引
    70. // 根据索引删除对应的对象
    71. // 方法二
    72. var index = this.list.findIndex(item => {
    73. if (item.id == id) {
    74. return true
    75. }
    76. })
    77. console.log(index)
    78. // this.list.splice(index, 1)
    79. // 方法一
    80. // 在数组some方法中,如果return true,就立刻终止这个数组的后续循环
    81. this.list.some((v, i) => {
    82. if (v.id == id) {
    83. this.list.splice(i, 1)
    84. return true
    85. }
    86. })
    87. },
    88. serach(keywords) {
    89. // 第一种方法
    90. var newlist = [];
    91. this.list.forEach(item => {
    92. // item.name.indexOf(keywords) != -1 名字包含就push到新数组中去
    93. if (item.name.indexOf(keywords) != -1) {
    94. newlist.push(item)
    95. }
    96. });
    97. return newlist
    98. // 第二种方法
    99. // var newlist = this.list.filter(item=>{
    100. // if (item.name.includes(keywords)) {
    101. // return item
    102. // }
    103. // })
    104. // return newlist
    105. }
    106. }
    107. });
    108. </script>
    109. </body>
    110. </html>

    1.gif