bug fixed #6121
This commit is contained in:
parent
a6068736cb
commit
b93725bbb9
2 changed files with 51 additions and 71 deletions
|
@ -1,81 +1,55 @@
|
|||
<template>
|
||||
<Tree :data="data3" :load-data="loadData" show-checkbox></Tree>
|
||||
<div>
|
||||
<Tree ref="treeRef" :data="data4" show-checkbox multiple></Tree>
|
||||
<Button @click="get">
|
||||
get
|
||||
</Button>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
//验证bug #6139
|
||||
export default {
|
||||
data () {
|
||||
return {
|
||||
data3: [
|
||||
data4: [
|
||||
{
|
||||
title: 'parent',
|
||||
loading: false,
|
||||
children: []
|
||||
title: 'parent 1',
|
||||
expand: true,
|
||||
children: [
|
||||
{
|
||||
title: 'parent 1-1',
|
||||
expand: true,
|
||||
children: [
|
||||
{
|
||||
title: 'leaf 1-1-1',
|
||||
checked : false,
|
||||
disabled: true
|
||||
},
|
||||
{
|
||||
title: 'leaf 1-1-2'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'parent 1-2',
|
||||
expand: true,
|
||||
children: [
|
||||
{
|
||||
title: 'leaf 1-2-1',
|
||||
},
|
||||
{
|
||||
title: 'leaf 1-2-1'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
loadData (item, callback) {
|
||||
setTimeout(() => {
|
||||
const isSet = Math.ceil(Math.random()*10)%2;
|
||||
let data = [];
|
||||
if( isSet ){
|
||||
data = [
|
||||
{
|
||||
title: 'children-1',
|
||||
loading: false,
|
||||
children: []
|
||||
}
|
||||
];
|
||||
}
|
||||
callback(data);
|
||||
}, 1000);
|
||||
get(){
|
||||
console.log(this.$refs.treeRef.getCheckedNodes())
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
<!--<template>-->
|
||||
<!-- <Tree :data="data2" check-directly show-checkbox></Tree>-->
|
||||
<!--</template>-->
|
||||
<!--<script>-->
|
||||
<!-- export default {-->
|
||||
<!-- data () {-->
|
||||
<!-- return {-->
|
||||
<!-- data2: [-->
|
||||
<!-- {-->
|
||||
<!-- title: 'parent 1',-->
|
||||
<!-- expand: true,-->
|
||||
<!-- children: [-->
|
||||
<!-- {-->
|
||||
<!-- title: 'parent 1-1',-->
|
||||
<!-- expand: true,-->
|
||||
<!-- children: [-->
|
||||
<!-- {-->
|
||||
<!-- title: 'leaf 1-1-1'-->
|
||||
<!-- },-->
|
||||
<!-- {-->
|
||||
<!-- title: 'leaf 1-1-2'-->
|
||||
<!-- }-->
|
||||
<!-- ]-->
|
||||
<!-- },-->
|
||||
<!-- {-->
|
||||
<!-- title: 'parent 1-2',-->
|
||||
<!-- expand: true,-->
|
||||
<!-- children: [-->
|
||||
<!-- {-->
|
||||
<!-- title: 'leaf 1-2-1'-->
|
||||
<!-- },-->
|
||||
<!-- {-->
|
||||
<!-- title: 'leaf 1-2-1'-->
|
||||
<!-- }-->
|
||||
<!-- ]-->
|
||||
<!-- }-->
|
||||
<!-- ]-->
|
||||
<!-- }-->
|
||||
<!-- ]-->
|
||||
<!-- }-->
|
||||
<!-- }-->
|
||||
<!-- }-->
|
||||
<!--</script>-->
|
||||
|
|
|
@ -121,9 +121,9 @@
|
|||
const node = this.flatState[nodeKey].node;
|
||||
const parent = this.flatState[parentKey].node;
|
||||
if (node.checked == parent.checked && node.indeterminate == parent.indeterminate) return; // no need to update upwards
|
||||
|
||||
if (node.checked == true) {
|
||||
this.$set(parent, 'checked', parent[this.childrenKey].every(node => node.checked));
|
||||
// #6121
|
||||
this.$set(parent, 'checked', parent[this.childrenKey].every(node => node.checked || node.disabled !== undefined ));
|
||||
this.$set(parent, 'indeterminate', !parent.checked);
|
||||
} else {
|
||||
this.$set(parent, 'checked', false);
|
||||
|
@ -160,10 +160,16 @@
|
|||
},
|
||||
updateTreeDown(node, changes = {}) {
|
||||
if (this.checkStrictly) return;
|
||||
|
||||
for (let key in changes) {
|
||||
this.$set(node, key, changes[key]);
|
||||
// after #6121
|
||||
if( key === 'checked' && node.disabled ){
|
||||
this.$set(node, key, node.checked);
|
||||
}else{
|
||||
this.$set(node, key, changes[key]);
|
||||
}
|
||||
// before -- this.$set(node, key, changes[key]);
|
||||
}
|
||||
|
||||
if (node[this.childrenKey]) {
|
||||
node[this.childrenKey].forEach(child => {
|
||||
this.updateTreeDown(child, changes);
|
||||
|
|
Loading…
Add table
Reference in a new issue