请老师帮忙看一下dialog回调函数怎么用
来源:1-1 vue介绍
慕移动0250816
2022-07-30 08:33:17
我在使用pagehelper的时候想实现添加数据时跳转至最新的页面,但是当分页产生新的页面时,由于是异步查询,查询出来的数据并不是最新的想请老师看看怎么解决。
相关代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .el-table .warning-row { background: oldlace; } .el-table .success-row { background: #f0f9eb; } </style> <script src="js/axios-0.18.0.js"></script> </head> <body> <div id="app"> <!--搜索表单--> <el-form :inline="true" :model="brandSelect" class="demo-form-inline"> <el-form-item label="当前状态"> <el-select v-model="brandSelect.status" placeholder="当前状态"> <el-option label="启用" value="1"></el-option> <el-option label="禁用" value="0"></el-option> </el-select> </el-form-item> <el-form-item label="企业名称"> <el-input v-model="brandSelect.companyName" placeholder="企业名称"></el-input> </el-form-item> <el-form-item label="品牌名称"> <el-input v-model="brandSelect.brandName" placeholder="品牌名称"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit">查询</el-button> </el-form-item> </el-form> <!--按钮--> <el-row> <el-button type="danger" plain>批量删除</el-button> <el-button type="primary" plain @click="addPage">新增</el-button> </el-row> <!--添加数据对话框表单--> <el-dialog title="新增品牌" :visible.sync="dialogVisible" @close="close" width="30%" > <el-form ref="form" :model="brand" label-width="80px"> <el-form-item label="品牌名称"> <el-input v-model="brand.brandName"></el-input> </el-form-item> <el-form-item label="企业名称"> <el-input v-model="brand.companyName"></el-input> </el-form-item> <el-form-item label="排序"> <el-input v-model="brand.ordered"></el-input> </el-form-item> <el-form-item label="备注"> <el-input type="textarea" v-model="brand.description"></el-input> </el-form-item> <el-form-item label="状态"> <el-switch v-model="brand.status" active-value="1" inactive-value="0" ></el-switch> </el-form-item> <el-form-item> <el-button type="primary" @click="addBrand">提交</el-button> <el-button @click="dialogVisible = false">取消</el-button> </el-form-item> </el-form> </el-dialog> <!--表格--> <template> <el-table :data="tableData" style="width: 100%" :row-class-name="tableRowClassName" @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55"> </el-table-column> <el-table-column type="index" width="50"> </el-table-column> <el-table-column prop="brandName" label="品牌名称" align="center" > </el-table-column> <el-table-column prop="companyName" label="企业名称" align="center" > </el-table-column> <el-table-column prop="ordered" align="center" label="排序"> </el-table-column> <el-table-column prop="status" align="center" label="当前状态"> <template slot-scope="scope"> {{scope.row.status == 0 ? "禁用" : "启用"}} </template> </el-table-column> <el-table-column align="center" label="操作"> <el-row> <el-button type="primary">修改</el-button> <el-button type="danger">删除</el-button> </el-row> </el-table-column> </el-table> </template> <!--分页工具条--> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="Page.currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="Page.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="Page.total"> </el-pagination> </div> <script src="js/vue.js"></script> <script src="element-ui/lib/index.js"></script> <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css"> <script> new Vue({ el: "#app", methods: { /* deleteBrand(id){ axios.get("brand/delete?id="+id).then((resp)=>{ var result = resp.data; }); },*/ close(){ }, addPage(){ this.dialogVisible=true; this.brand={}; }, PageLoad(){ axios.get(`brand/selectAll?pageNum=${this.Page.currentPage}&pageSize=${this.Page.pageSize}&status=${this.brandSelect.status}&brandName=${this.brandSelect.brandName}&companyName=${this.brandSelect.companyName}`).then((resp)=>{ var result = resp.data; console.log(result); this.Page.total=result.total; this.Page.pageSize=result.pageSize; this.tableData=result.list; this.Page.pages=result.pages; this.Page.hasNextPage=result.hasNextPage; this.Page.isFirstPage=result.isFirstPage; this.Page.isLastPage=result.isLastPage; this.Page.size=result.size; this.Page.navigateLastPage=result.navigateLastPage; }); }, tableRowClassName({row, rowIndex}) { if (rowIndex === 1) { return 'warning-row'; } else if (rowIndex === 3) { return 'success-row'; } return ''; }, // 复选框选中后执行的方法 handleSelectionChange(val) { this.multipleSelection = val; console.log(this.multipleSelection) }, // 查询方法 onSubmit() { console.log(this.brandSelect); this.PageLoad(); }, // 添加数据 addBrand(){ console.log(this.brand); axios.post("brand/add",this.brand).then((resp)=>{ var result = resp.data; if (result.flag){ this.$message.success(result.msg); this.PageLoad(); var currPage=this.Page.navigateLastPage; this.handleCurrentChange(currPage); }else { this.$message.error(result.msg); } }); this.dialogVisible=false; }, //分页 handleSizeChange(val) { console.log(`每页 ${val} 条`); this.Page.pageSize=val; this.PageLoad(); }, handleCurrentChange(val) { console.log(`当前页: ${val}`); this.Page.currentPage=val; this.PageLoad(); } }, created(){ this.PageLoad(); }, data() { return { Page:{ // 当前页码 currentPage: 1, //页面大小 pageSize:5, //总记录条数 total:100, //是否有下一页 hasNextPage:false, //是否是第一页 isFirstPage:true, //是否是最后一页 isLastPage:false, //页数 pages:5, //当前页面的记录条数 size:0 }, // 添加数据对话框是否展示的标记 dialogVisible: false, // 品牌模型数据 brand: { status: '', brandName: '', companyName: '', id:"", ordered:"", description:"" }, brandSelect:{ status: '', brandName: '', companyName: '', }, // 复选框选中数据集合 multipleSelection: [], // 表格数据 tableData: [{ brandName: '华为', companyName: '华为科技有限公司', ordered: '100', status: "1" }, { brandName: '华为', companyName: '华为科技有限公司', ordered: '100', status: "1" }, { brandName: '华为', companyName: '华为科技有限公司', ordered: '100', status: "1" }, { brandName: '华为', companyName: '华为科技有限公司', ordered: '100', status: "1" }] } } }) </script> </body> </html>
其中elemnet-ui有一个回调方法close不会用
相关代码:
addBrand(){ console.log(this.brand); axios.post("brand/add",this.brand).then((resp)=>{ var result = resp.data; if (result.flag){ this.$message.success(result.msg); this.PageLoad(); var currPage=this.Page.navigateLastPage; this.handleCurrentChange(currPage); }else { this.$message.error(result.msg); } }); this.dialogVisible=false;
在这个方法里查询全部的this.PageLoad()方法是异步的怎样使用dialog的回调方法确保
var currPage=this.Page.navigateLastPage;
这条语句拿到是最新的数据,用于产生新页面是跳转到新页面。
1回答
好帮手慕小脸
2022-07-30
同学你好,上述贴出与后端代码应该是相关联的,无法进行单独测试,且上述代码不属于课程演示中的案例,所以老师为此不能提供准确的编写代码思路,同学如果是在校学生的话,更建议问一下授课老师,以便于有更清晰的解决方案
祝学习愉快~
相似问题