vue如何点击确定像后台添加相应的内容

本文详细介绍了如何使用ElementUI的Tree组件实现角色权限分配的功能。通过获取半选和全选节点ID,并将其转化为字符串上传至后台,完成权限设置。文章提供了具体的代码示例,包括点击事件绑定、ID获取及数据请求过程。

分配角色:(使用了elementui,上下衔接可能不那么清晰,主要是想告诉大家这件事的思路)
获取点击一二三级id,使用,分割,传入后台
使用到elementui中tree的两个api:
获取半选中的节点id:getCheckedKeys
获取全选中的节点id:getHalfCheckedKeys
最终打到的目的:
在这里插入图片描述

代码部分详解:

  1. 给点击确定时绑定点击事件
  2. 获取全选和半选的id
  3. 将获取的id使用,分割
  4. 最后请求数据,上传到后台
    // 点击确定为分配角色添加权限
    async allotRights () {
      const keys = [
        // 获取半选中的节点id
        ...this.$refs.treeRef.getCheckedKeys(),
        // 获取全选中的节点id
        ...this.$refs.treeRef.getHalfCheckedKeys()
      ]
      // 将数组以,分割成字符串
      const idStr = keys.join(',')
      // 请求后台数据,获取roleId,需要在点击分配权限时将获取到的id值保存到data中
      const { data: res } = await this.$http.post(`roles/${this.roleId}/rights`, { rids: idStr })
      if (res.meta.status !== 200) {
        return this.$message.error('添加角色权限失败!')
      } else {
        this.TranslateVisible = false
        this.getRolessList()
        return this.$message.success('添加角色权限成功!')
      }
    }
虽然提供的引用内容未涉及vue后台项目中点击页码列表不切换问题的解决方案,但可以从常见情况来分析解决办法。 ### 检查页码绑定数据 确保页码相关的数据绑定正确,页码数据是否被正确更新。例如,在Vue组件中,页码通常是一个响应式数据,需要检查是否在点击页码时正确修改了这个数据。 ```vue <template> <div> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </template> <script> export default { data() { return { currentPage: 1, pageSize: 10, total: 100 }; }, methods: { handleSizeChange(newSize) { this.pageSize = newSize; // 重新加载数据 this.loadData(); }, handleCurrentChange(newPage) { this.currentPage = newPage; // 重新加载数据 this.loadData(); }, loadData() { // 模拟加载数据 console.log(`当前页码: ${this.currentPage}, 每页数量: ${this.pageSize}`); } } }; </script> ``` ### 检查事件绑定 确认页码列表的点击事件是否正确绑定。在使用组件库(如Element UI)时,要确保事件名称和处理函数正确绑定。如果事件绑定错误,点击页码时不会触发相应的处理逻辑。 ### 检查数据加载逻辑 点击页码后需要重新加载对应页码的数据,如果数据加载逻辑有误,可能导致页面显示不更新。检查数据请求的参数是否正确传递了页码信息,以及数据返回后是否正确更新了页面展示的数据。 ```javascript methods: { loadData() { // 发送请求,携带页码和每页数量参数 axios.get('/api/data', { params: { page: this.currentPage, pageSize: this.pageSize } }).then(response => { // 更新页面展示的数据 this.dataList = response.data.data; }).catch(error => { console.error('数据加载失败', error); }); } } ``` ### 检查路由问题 如果页码切换涉及路由变化,要确保路由配置正确,路由导航守卫没有阻止页面切换。可以在路由配置中添加调试信息,检查路由是否正常跳转。 ```javascript const router = new VueRouter({ routes: [ { path: '/page/:page', component: PageComponent } ] }); router.beforeEach((to, from, next) => { console.log('路由跳转:', to, from); next(); }); ``` ### 检查组件缓存问题 如果使用了组件缓存(如`<keep-alive>`),可能会导致页面不更新。可以尝试在点击页码时手动刷新组件,或者调整`<keep-alive>`的配置。 ```vue <template> <keep-alive :include="cachedComponents"> <router-view></router-view> </keep-alive> </template> <script> export default { data() { return { cachedComponents: [] }; }, methods: { handlePageChange() { // 手动刷新组件 this.cachedComponents = []; this.$nextTick(() => { this.cachedComponents = ['PageComponent']; }); } } }; </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值