vue实现图书管理的增删改查功能

vue实现图书管理的增删改查功能

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style type="text/css">
    .grid {
      margin: auto;
      width: 530px;
      text-align: center;
    }

    .grid table {
      border-top: 1px solid #C2D89A;
      width: 100%;
      border-collapse: collapse;
    }

    .grid th,
    td {
      padding: 10;
      border: 1px dashed #F3DCAB;
      height: 35px;
      line-height: 35px;
    }

    .grid th {
      background-color: #F3DCAB;
    }

    .grid .book {
      padding-bottom: 10px;
      padding-top: 5px;
      background-color: #F3DCAB;
    }
  </style>
</head>

<body>
  <div id="app">
    <div class="grid">
      <div>
        <h1>图书管理</h1>
        <div class="book">
          <div>
            <label for="id">
              编号:
            </label>
            <input type="text" id='id' v-model='id' :disabled="flag">
            <label for="name">
              名称:
            </label>
            <input type="text" name='name' v-on:keyup.enter="handle" v-model='name'>
            <button @click='handle'>提交</button>
          </div>
        </div>
      </div>

      <table>
        <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='toEdit(item.id)'>修改</a>
              <span>|</span>
              <a href="" @click.prevent='delBook(item.id)'>删除</a>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
  <script type="text/javascript" src="js/vue.js"></script>
  <script type="text/javascript">
    /*
      图书管理-图书列表展示功能
      注意事项:修改
      事件绑定时,可以只添加修饰符,而不绑定事件函数
      prevent阻止事件的默认行为
    */
    var vm = new Vue({
      el: '#app',
      data: {
        flag: false,
        id: '',
        name: '',
        books: [{
          id: 1,
          name: '三国演义',
          date: ''
        }, {
          id: 2,
          name: '水浒传',
          date: ''
        }, {
          id: 3,
          name: '红楼梦',
          date: ''
        }, {
          id: 4,
          name: '西游记',
          date: ''
        }]
      },

      methods: {
        handle: function () {
          //添加图书
          var book = new Object();
          /* 
            js 创建空对象的3种方法       
            var obj1 = {};
            var obj2 = Object.create(null);
            var obj3 = new Object(); 
          */


          if (this.flag) {
            //根据当前id去更新数组中对应的数据
            this.books.some((item) => {
              if (item.id == this.id) {
                //让数组中的name变成输入框的name
                item.name = this.name;
                //找到了,终止循环
                return true;
              }
            });
            this.flag = false;
          } else {
            book.id = this.id;
            book.name = this.name;
            book.date = '';
            this.books.push(book);
          }
          //执行完添加或删除后,表单清空
          this.id = '';;
          this.name = '';

        },
        toEdit: function (id) {
          console.log(id);
          //禁止修改id
          this.flag = true;
          //根据id查询出要编辑的数据

          //第一种方式,过滤器过滤出数组中对应的id对象,但是一个数组
          var book = this.books.filter(item => {
            return item.id == id;
          });

          //这两个可以用来判断js变量是数组还是对象
          // console.log(Array.prototype.isPrototypeOf(book[0]));
          // console.log(Object.prototype.toString.call(book[0]));
          this.id = book[0].id;
          this.name = book[0].name;

          //----------------------------------
          //第二种方式获取books,遍历
          /* var book = {};
          for (let i = 0; i < this.books.length; i++) {
              if (i+1 == id) {
                book = this.books[i];
                break;
              }
          }
          this.id = book.id;
          this.name = book.name; */
        },

        delBook: function (id) {
          //删除图书

          //方法一:
          //findIndex查找传过来的参数id和数组中的id相等,则返回对应id 的索引
          //函数的参数item代表数组中某一项数据
          var index = this.books.findIndex((item) => {
            return item.id == id;
          });
          //根据索引删除数组元素
          this.books.splice(index, 1);

          //-----------------------------
          //方法二:通过filter方法删除
          //filter 把数组中id与传过来的id比较,不相等的过滤出来,形成新的数组,赋值给books
          // this.books = this.books.filter((item) => {
          //   return item.id != id;
          // })
        }
      },
    });
  </script>
</body>

</html>

你可能感兴趣的:(vue,js,java)