报错如下:
树结构显示角色的权限,勾选中的item是拥有的。但是在遍历数组获取选中item时报递归栈超出最大size.
错误源码:
getIds() {
this.allPermission.map(myItem => {
if (myItem.select) {
//select状态添加
this.checkKeys.push(myItem.id)
}
if (myItem.children && myItem.children.length) {
this.getIds(myItem.children)
}
})
},
//
async getAssign() {
let result = await this.$API.permission.toAssign(this.roleId);
console.log(result);
if (result.code = 20000) {
this.allPermission = result.data.children || [];
this.checkKeys = []
this.getIds() //调用报错:超出最大递归层数
}
}
},
解决:
多次调试检查代码,发现递归的数组一直是 this.allPermission ,导致递归出不去,死循环了。
修改如下:
getIds(arr) {
// this.allPermission.map(myItem => {
arr.map(myItem => {
if (myItem.select) {
//select状态添加
this.checkKeys.push(myItem.id)
}
if (myItem.children && myItem.children.length) {
this.getIds(myItem.children)
}
})
},
//
async getAssign() {
let result = await this.$API.permission.toAssign(this.roleId);
console.log(result);
if (result.code = 20000) {
this.allPermission = result.data.children || [];
this.checkKeys = []
this.getIds(this.allPermission) //调用报错:超出最大递归层数
}
}
},
递归的函数传递数组进去。不用this.allPermission.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101523.html