We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
index.html:
index.html
<!doctype html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Axios & Mock.js</title> <style> .page a { margin-left: 15px; } .page a.active { color: red; } </style> </head> <body> <div id="app"> <dl> <dt>图书列表</dt> <dd class="page"> <a href="javascript:void(0);" v-for="num in totalPage" :class="{active: currentPage === num}" @click="currentPage = num" >第{{num}}页</a> </dd> <dd v-for="book in bookList"> {{book.row_index}}. 《{{book.book_name}}》 - CN¥{{book.book_price}} - {{book.book_press}} </dd> </dl> </div> <script src="https://cdn.bootcdn.net/ajax/libs/Mock.js/1.0.1-beta3/mock-min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script> <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script> <script src="./js/api.js"></script> <script> const vm = new Vue({ el: '#app', data: { bookList: [], bookTotal: 0, pageSize: 10, currentPage: 1 }, created() { this.getBookList(); }, beforeUpdate() { this.getBookList(); }, computed: { totalPage() { // 每页 `pageSize` 条,有小数,则+1 // 若列表长度为0,则显示1 return Math.ceil(this.bookTotal / this.pageSize) || 1; } }, methods: { getBookList() { axios.get(`/books?page=${this.currentPage}&page_size=${this.pageSize}`) .then(response => { const {book_list: bookList, total} = response.data.result; this.bookList = bookList; this.bookTotal = total; }); } } }); </script> </body> </html>
./js/api.js:
./js/api.js
const baseUrl = 'https://www.wuxianjie.net'; axios.defaults.baseURL = baseUrl; const getValueFromUrl = (url, paramName, defaultValue) => { const queryStr = url.split('?'); if (queryStr.length > 1) { const paramArray = queryStr[1].split('&'); let keyValArray; for (let i = 0; i < paramArray.length; ++i) { keyValArray = paramArray[i].split('='); let key = keyValArray[0]; let value = keyValArray[1] || null; if (key === paramName) { return value; } } } return defaultValue; }; const getDataByPaging = (pageNumber, pageSize, data, key) => { return { [key]: data[key].slice((pageNumber - 1) * pageSize, pageNumber * pageSize), total: data[key].length }; }; const mockResponseResult = (data) => { return { 'error_code': 0, 'message': 'SUCCESS', result: data }; }; const pressList = ['人民邮电出版社','清华大学出版社','机械工业出版社','电子工业出版社']; const bookListTemplate = { 'book_list|50': [ { 'row_index|+1': 1, 'book_id|+1': 101, 'book_name': '@ctitle', 'book_price|50-100.1-2': 0, 'book_press|1': pressList, 'book_time': '@date("yyyy-MM-dd")' } ] }; const mockData = Mock.mock(bookListTemplate); Mock.mock(new RegExp(`${baseUrl}/books.*`), 'get', (options) => { const pageNumber = getValueFromUrl(options.url, 'page', 1), pageSize = getValueFromUrl(options.url, 'page_size', 10); const bookList = getDataByPaging(pageNumber, pageSize, mockData, 'book_list'); return mockResponseResult(bookList); });
The text was updated successfully, but these errors were encountered:
No branches or pull requests
index.html
:./js/api.js
:The text was updated successfully, but these errors were encountered: