index.html 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Vue Demo</title>
  6. <style>
  7. #update-book {
  8. display: none;
  9. }
  10. </style>
  11. <link rel="stylesheet" href="../tmp/bootstrap.min.css">
  12. <script src="../tmp/vue.min.js"></script>
  13. </head>
  14. <body>
  15. <div class="container">
  16. <div class="col-md-6 col-md-offset-3">
  17. <h1>Vue demo</h1>
  18. <div id="app">
  19. <table class="table table-hover ">
  20. <br/>
  21. <thead>
  22. <tr>
  23. <th>序号</th>
  24. <th>书名</th>
  25. <th>作者</th>
  26. <th>价格</th>
  27. <th>操作</th>
  28. </tr>
  29. </thead>
  30. <tbody>
  31. <tr v-for='book in filterBooks'>
  32. <td>{{book.id}}</td>
  33. <td>{{book.author}}</td>
  34. <td>{{book.name}}</td>
  35. <td>{{book.price}}</td>
  36. <template v-if='book.id %2 == 0'>
  37. <td class="text-left">
  38. <button type="button" class="btn btn-success" class="del" @click="delBook(book)">删除</button>
  39. <button type="button" class="btn btn-success" @click="updateBook(book)">修改</button>
  40. </td>
  41. </template>
  42. <template v-else>
  43. <td class="text-left">
  44. <button type="button" class="btn btn-danger" class="del" @click="delBook(book)">删除</button>
  45. <button type="button" class="btn btn-danger" @click="updateBook(book)">修改</button>
  46. </td>
  47. </template>
  48. </tr>
  49. </tbody>
  50. </table>
  51. <!-- 添加书籍 -->
  52. <div id="add-book">
  53. <!--查询输入框-->
  54. <div class="row" style="margin-bottom: 30px;">
  55. <div class="col-md-4" style="text-align: left;font-size: 16px;line-height: 30px;">
  56. 请输入查询书名:
  57. </div>
  58. <div class="col-md-5" style="text-align: left;">
  59. <input type="text" class="form-control" v-model="search"/>
  60. </div>
  61. </div>
  62. <h3>添加书籍</h3>
  63. <hr/>
  64. <div class="form-group">
  65. <label for="group">书名</label>
  66. <input type="text" class="form-control" id="group" v-model="book.name">
  67. </div>
  68. <div class="form-group">
  69. <label for="author">作者</label>
  70. <input type="text" class="form-control" id="author" v-model="book.author">
  71. </div>
  72. <div class="form-group">
  73. <label for="price">价格</label>
  74. <input type="text" class="form-control" id="price" v-model="book.price">
  75. </div>
  76. <button class="btn btn-primary btn-block" v-on:click="addBook()">添加</button>
  77. </div>
  78. <!-- 修改书籍 -->
  79. <div id="update-book">
  80. <h3>修改书籍</h3>
  81. <hr/>
  82. <div class="form-group">
  83. <label for="group1">书名</label>
  84. <input type="text" class="form-control" id="group1" v-model="book.name">
  85. </div>
  86. <div class="form-group">
  87. <label for="author1">作者</label>
  88. <input type="text" class="form-control" id="author1" v-model="book.author">
  89. </div>
  90. <div class="form-group">
  91. <label for="price1">价格</label>
  92. <input type="text" class="form-control" id="price1" v-model="book.price">
  93. </div>
  94. <button class="btn btn-primary btn-block" v-on:click="updatedBook()">完成</button>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. <script>
  100. var id = 0;
  101. var vm = new Vue({
  102. el: "#app",
  103. // 计算函数 动态变化的数据
  104. methods: { // 写函数
  105. addBook: function () {
  106. this.book.id = this.books.length + 1;
  107. this.books.push(this.book);
  108. this.book = {};
  109. },
  110. delBook: function (book) {
  111. var blength = this.books.length;
  112. this.books.splice(book.id - 1, 1);
  113. for (var i = 0; i < blength; i++) {
  114. if (book.id < this.books[i].id) {
  115. this.books[i].id -= 1;
  116. }
  117. }
  118. },
  119. // 修改按钮
  120. updateBook: function (book) {
  121. $("#add-book").css("display", "none");
  122. $("#update-book").css("display", "block");
  123. id = book.id;
  124. },
  125. // 修改完成后的 确认按钮点击事件
  126. updatedBook: function () {
  127. this.book.id = id;
  128. this.books.splice(id - 1, 1, this.book);
  129. $("#add-book").css("display", "block");
  130. $("#update-book").css("display", "none");
  131. this.book = {};
  132. }
  133. },
  134. // 计算属性(过滤) 查询功能
  135. computed: {
  136. filterBooks: function () {
  137. var books = this.books;
  138. var search = this.search;
  139. /*if(!search){ // 没有输入查询内容
  140. return books;
  141. }
  142. var arr = [];
  143. for(var i = 0; i < books.length;i++){
  144. var index = books[i].name.indexOf( search );
  145. if(index > -1){
  146. arr.push(books[i]);
  147. }
  148. }
  149. return arr;
  150. */
  151. // vue 中的过滤器
  152. return books.filter(function (book) {
  153. return book.name.toLowerCase().indexOf(search.toLocaleLowerCase()) != -1
  154. });
  155. }
  156. },
  157. data: {
  158. book: [{
  159. id: 0,
  160. author: '',
  161. name: '',
  162. price: ''
  163. }],
  164. books: [{
  165. id: 1,
  166. author: '曹雪芹',
  167. name: '红楼梦',
  168. price: 36.00
  169. }, {
  170. id: 2,
  171. author: '曹雪芹',
  172. name: '三国演义',
  173. price: 37.00
  174. }, {
  175. id: 3,
  176. author: '曹雪芹',
  177. name: 'Good boy',
  178. price: 85.00
  179. }, {
  180. id: 4,
  181. author: '曹雪芹',
  182. name: '红楼梦',
  183. price: 39.00
  184. }],
  185. search: "" // 查询功能,""中不能加空格,否则默认查询空格
  186. }
  187. })
  188. </script>
  189. </body>
  190. </html>