vue+element解决 table点击操作按钮(如编辑/详情 )在编辑/详情页面关闭/保存后返回table当前页

思路:将当前页的页码nowPage存入localStroage/session,然后点击编辑/详情跳转到编辑/详情页面,然后,再次返回当前页的时候,在created生命周期里,获取到存储的nowPage,再进行加载

这里要借助vue中独有的守卫钩子函数  beforeRouteEnter(在路由跳转前加载数据)还有 beforeRouteEnter  beforeRouteUpdate、beforeRouteLeave

beforeRouteEnter(to, from, next) {
    console.log(this, 'beforeRouteEnter'); // undefined
    console.log(to, '组件独享守卫beforeRouteEnter第一个参数');
    console.log(from, '组件独享守卫beforeRouteEnter第二个参数');
    console.log(next, '组件独享守卫beforeRouteEnter第三个参数');
    next(vm => {
      //因为当钩子执行前,组件实例还没被创建
      // vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
      console.log(vm);//当前组件的实例
    });
  },

直接上代码:

下图中的 v-if=“totalPage!=0” 在本文最后解释

分页组件,在  handleCurrentChange方法中做如下操作

之后在cerated中做如下操作:

 守卫钩子:

写到这测试一下 发下页面内容正确,页码依旧是第一页

问题造成的原因:在我门返回当前页面取得总条数totalNum之前,element-ui组件已经在页面加载完毕了,这时的totalNum绑定的是data里初始化的总条数也就是0,所以呢总条数为0的时候,分页组件默认页码为1,并且当totalNum在Created生命周期里取得数据后,组件不会刷新才会导致页面内容正确,页码依旧是第一页。

解决办法:

我们要在created之后刷新这个分页组件或者让分页组件的html在cerated之后加载到页面,再次刷新这个分页组件不太现实,我们选择在created之后加载分页组件,具体方法使用v-if。在totalNum不为data里初始值为0的时候,才让这段html加载

如有更好的方法请留言,大家一起学习~QAQ

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤实现: 1. 在列表行中添加一个编辑按钮,并绑定点击事件,点击按钮时弹出编辑对话框。 2. 在编辑对话框中添加表单,让用户输入需要编辑的信息。 3. 在表单中添加提交按钮,并绑定点击事件,点击提交按钮时触发提交操作。 4. 在提交操作中,先禁用当前行的单行编辑按钮,然后发送请求保存编辑信息。 5. 如果保存成功,则立即关闭编辑对话框,并恢复当前行的单行编辑按钮的可用状态。 下面是一个示例代码,具体实现可以根据自己的需求进行调整: ```html <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="primary" @click="handleEdit(scope.row)">编辑</el-button> </template> </el-table-column> </el-table> <el-dialog :visible.sync="dialogVisible" title="编辑信息"> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="姓名"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="年龄"> <el-input v-model.number="form.age"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="handleSubmit" :disabled="submitting">提交</el-button> </el-form-item> </el-form> </el-dialog> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18 }, { name: '李四', age: 22 }, { name: '王五', age: 25 } ], dialogVisible: false, // 是否显示编辑对话框 form: { name: '', age: '' }, // 编辑表单数据 submitting: false // 是否正在提交数据 } }, methods: { handleEdit(row) { this.dialogVisible = true // 显示编辑对话框 this.form = { ...row } // 将当前行的数据复制到编辑表单中 }, handleSubmit() { this.submitting = true // 禁用提交按钮 setTimeout(() => { // 模拟提交数据 console.log('提交数据', this.form) this.submitting = false // 启用提交按钮 this.dialogVisible = false // 关闭编辑对话框 }, 1000) } } } </script> ``` 在提交数据时,我们可以使用`setTimeout`函数模拟异步请求的延迟,等待1秒钟后再关闭编辑对话框和启用单行编辑按钮。如果需要向服务器发送请求保存数据,可以在`setTimeout`函数中使用`axios`等库进行请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值