From 2aa682cf4791b2b2c845a9f371027af59930ae91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=8F=AD=E9=98=B3=E4=B8=BD?= <2431466589@qq.com> Date: Mon, 11 Dec 2023 23:55:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20231208 \344\275\234\344\270\232.txt" | 159 ++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 "37 \346\217\255\351\230\263\344\270\275/20231208 \344\275\234\344\270\232.txt" diff --git "a/37 \346\217\255\351\230\263\344\270\275/20231208 \344\275\234\344\270\232.txt" "b/37 \346\217\255\351\230\263\344\270\275/20231208 \344\275\234\344\270\232.txt" new file mode 100644 index 0000000..ecf9e61 --- /dev/null +++ "b/37 \346\217\255\351\230\263\344\270\275/20231208 \344\275\234\344\270\232.txt" @@ -0,0 +1,159 @@ +图书管理系统 + +```js +/** + * 目标1:渲染图书列表 + * 1.1 获取数据 + * 1.2 渲染数据 + */ + +//调用的是父亲 +// const tbody = document.querySelector('.list') + +const creator = '毛毛' +//封装。获取并渲染图书列表函数 +function getBooksList(){ +//1.1获取数值 +axios({ + url:'https://hmajax.itheima.net/api/books', + params:{ + //外号,获取对应数据 + creator + } +}).then(result =>{ + // console.log(result); + const bookLiist = result.data.data; + // console.log(bookLiist); + //渲染数据 + const htmlStr = bookLiist.map((item,index) => { + // const { author,bookname,publisher,id} = item; + return ` + + ${index+ 1} + ${item.bookname} + ${item.author} + ${item.publisher} + + 删除 + 编辑 + + + `; + }).join('') + document.querySelector('.list').innerHTML = htmlStr +}).catch(error =>{ + console.log(error); +}) + + + +} + +//打开网页就要先调用一次 +getBooksList() + + +// 目标2:实现图书的添加功能 +// 2.1 新增弹框=>显示和隐藏 +// 2.2 收集表单数据,并提交到服务器保存 +// 2.3 刷新图书列表 + +//创建弹窗对象 +//2.新增图书 + + const addModalDom = document.querySelector('.add-modal'); + const addModal = new bootstrap.Modal(addModalDom); + const addBtn = document.querySelector('.add-btn'); + + addBtn.addEventListener('click',()=>{ + //手机表单数据,并提交到服务器保存 + const addForm = document.querySelector('.add-form'); + const bookObj = serialize(addForm,{hash : true,empty : true}) + + //提交到服务器 + axios({ + url : 'http://hmajax.itheima.net/api/books', + method : 'POST', + data : { + ...bookObj, + creator + } + + }).then(result =>{ + + //添加成功后,重新渲染图书列表 + getBooksList(); + //重置表单 + addForm.reset(); + //隐藏弹框 + addModal.hide(); + }) + + }) + //删除操作 + document.querySelector('.list').addEventListener('click',e =>{ + if (e.target.classList.contains('del')) { + const theId = e.target.parentNode.dataset.id + //调用删除接口 + axios({ + url:`http://hmajax.itheima.net/api/books/${theId}`, + method : 'DELETE' + }).then(()=>{ + getBooksList() + }) + } + + }) + + // 创建弹窗对象 +const editBox=document.querySelector('.edit-modal') // 添加图书的弹窗对象 +const editmodal=new bootstrap.Modal(editBox) // modal对象,可以控制addBox显示或隐藏 +// 获取要收集的表单对象 +const editForm=document.querySelector('.edit-form') +// 保存按钮点击事件 +document.querySelector('.edit-btn').addEventListener('click',()=>{ +// 3.收集表单数据 + const book=serialize(editForm,{hash:true,empty:true}) + console.log(book); + // 4.调用接口提交数据 + axios({ + url:'http://hmajax.itheima.net/api/books', + method:'post', + data:{ + ...book, + creator + } + }).then(reault=>{ + console.log(reault); + // 隐藏弹窗 + editmodal.hide() + // 清空表单项 + editForm.reset() + // 成功的话,获取新数据并渲染 + getBooksList() + }) +}) +document.querySelector('.list').addEventListener('click',(e)=>{ + if (e.target.className==='edit') { + editmodal.show() //显示 + //获取图书的id + const id=e.target.parentNode.dataset.id + //通过id调用接口,获取对应的图书数据,回显到表单 + axios({ + url:'https://hmajax.itheima.net/api/books/'+ id //拼接字符串的形式 + + }).then(result=>{ + //console.log(result.data.data); + const book=result.data.data; + const {id,author,bookname,publisher}=book + editForm.querySelector('.publisher').value=publisher; + editForm.querySelector('.bookname').value=bookname; + editForm.querySelector('.author').value=author; + editForm.querySelector('.id').value=id; + + }) + + } +}) +``` + -- Gitee