问题描述
比如我开始selectedMenus里的数据是【1,2,3,4,5,6】,在我想要进行修改里面数据的时候:
selectedMenus=【1,2,3,5】
只要是原数组的子数组,el-tree的展示都会出问题:即展示的是上一个折叠面板的勾选状态
<el-collapse v-model="activeName" accordion @change="change">
<el-collapse-item v-for="(r,index) in roles" :key="index" :name="r.id" :title="r.nameZh">
<div>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>可访问资源</span>
<el-button icon="el-icon-delete" style="float: right; padding: 3px 0;color: #ff0000;"
@click="deleteRole(r)"></el-button>
</div>
<div>
<el-tree
ref="tree"
:data="allMenus"
:default-checked-keys="selectedMenus"
:props="defaultProps"
node-key="id"
show-checkbox></el-tree>
<div style="display: flex;align-items: flex-end;justify-content: flex-end">
<el-button @click="cancelUpdate">取消修改</el-button>
<el-button type="primary" @click="doUpdate(r.id,index)">确认修改</el-button>
</div>
</div>
</el-card>
</div>
</el-collapse-item>
</el-collapse>
initSelectedMenus(rid) {
this.getRequest("/system/basic/permiss/" + rid).then(resp => {
if (resp) {
this.roles.forEach((r,index)=>{
//console.log(index);
if(rid===r.id){
//console.log(index);
this.$refs.tree[index].setCheckedKeys(resp);
}
})
}
})
}
解决方法
不要用简单的赋值方法,即selectedMenus=resp,修改成上面的this.$refs.tree[index].setCheckedKeys(resp);方式