Commit c7315098532c3d79c98dfb1d5eded3f71ea3a54a
1 parent
87379c82
修复两个问题:
1.如果某行禁用_disabled=true,则这行的_checked,无论如何都是false,因为禁用的目的就是不能选择 2.修复某行设置_disabled=true时,全选状态判断有误的bug
Showing
3 changed files
with
26 additions
and
13 deletions
Show diff stats
src/components/table/table-head.vue
@@ -84,16 +84,23 @@ | @@ -84,16 +84,23 @@ | ||
84 | }, | 84 | }, |
85 | isSelectAll () { | 85 | isSelectAll () { |
86 | let isSelectAll = true; | 86 | let isSelectAll = true; |
87 | + let isAllDisabled = true; | ||
87 | if (!this.data.length) isSelectAll = false; | 88 | if (!this.data.length) isSelectAll = false; |
88 | 89 | ||
89 | for (let i = 0; i < this.data.length; i++) { | 90 | for (let i = 0; i < this.data.length; i++) { |
90 | - if (!this.objData[this.data[i]._index]._isChecked) { | 91 | + if(this.objData[this.data[i]._index]._isDisabled){ |
92 | + isAllDisabled = isAllDisabled && true; | ||
93 | + continue; | ||
94 | + }else{ | ||
95 | + isAllDisabled = isAllDisabled && false; | ||
96 | + } | ||
97 | + if (!this.objData[this.data[i]._index]._isChecked ) { | ||
91 | isSelectAll = false; | 98 | isSelectAll = false; |
92 | break; | 99 | break; |
93 | } | 100 | } |
94 | } | 101 | } |
95 | 102 | ||
96 | - return isSelectAll; | 103 | + return isAllDisabled ? false : isSelectAll; |
97 | } | 104 | } |
98 | }, | 105 | }, |
99 | methods: { | 106 | methods: { |
src/components/table/table.vue
@@ -553,8 +553,17 @@ | @@ -553,8 +553,17 @@ | ||
553 | this.data.forEach((row, index) => { | 553 | this.data.forEach((row, index) => { |
554 | const newRow = deepCopy(row);// todo 直接替换 | 554 | const newRow = deepCopy(row);// todo 直接替换 |
555 | newRow._isHover = false; | 555 | newRow._isHover = false; |
556 | + if(newRow._disabled){ | ||
557 | + newRow._isDisabled = newRow._disabled; | ||
558 | + }else{ | ||
559 | + newRow._isDisabled = false; | ||
560 | + } | ||
556 | if (newRow._checked) { | 561 | if (newRow._checked) { |
557 | - newRow._isChecked = newRow._checked; | 562 | + if(newRow._isDisabled){ |
563 | + newRow._isChecked = false; | ||
564 | + }else{ | ||
565 | + newRow._isChecked = newRow._checked; | ||
566 | + } | ||
558 | } else { | 567 | } else { |
559 | newRow._isChecked = false; | 568 | newRow._isChecked = false; |
560 | } | 569 | } |
@@ -563,12 +572,6 @@ | @@ -563,12 +572,6 @@ | ||
563 | } else { | 572 | } else { |
564 | newRow._isHighlight = false; | 573 | newRow._isHighlight = false; |
565 | } | 574 | } |
566 | - | ||
567 | - if(newRow._disabled){ | ||
568 | - newRow._isDisabled = newRow._disabled; | ||
569 | - }else{ | ||
570 | - newRow._isDisabled = false; | ||
571 | - } | ||
572 | data[index] = newRow; | 575 | data[index] = newRow; |
573 | }); | 576 | }); |
574 | return data; | 577 | return data; |
test/routers/table.vue
@@ -54,26 +54,29 @@ | @@ -54,26 +54,29 @@ | ||
54 | age: 18, | 54 | age: 18, |
55 | address: '北京市朝阳区芍药居', | 55 | address: '北京市朝阳区芍药居', |
56 | _highlight: true, | 56 | _highlight: true, |
57 | - _checked: true | 57 | + _checked: true, |
58 | + _disabled: false | ||
58 | }, | 59 | }, |
59 | { | 60 | { |
60 | name: '张小刚', | 61 | name: '张小刚', |
61 | age: 25, | 62 | age: 25, |
62 | address: '北京市海淀区西二旗', | 63 | address: '北京市海淀区西二旗', |
63 | - _checked: true | 64 | + _checked: false, |
65 | + _disabled: true | ||
64 | }, | 66 | }, |
65 | { | 67 | { |
66 | name: '李小红', | 68 | name: '李小红', |
67 | age: 30, | 69 | age: 30, |
68 | address: '上海市浦东新区世纪大道', | 70 | address: '上海市浦东新区世纪大道', |
69 | - _checked: false, | 71 | + _checked: true, |
70 | _disabled: true | 72 | _disabled: true |
71 | }, | 73 | }, |
72 | { | 74 | { |
73 | name: '周小伟', | 75 | name: '周小伟', |
74 | age: 26, | 76 | age: 26, |
75 | address: '深圳市南山区深南大道', | 77 | address: '深圳市南山区深南大道', |
76 | - _checked: true | 78 | + _checked: true, |
79 | + _disabled: false | ||
77 | } | 80 | } |
78 | ] | 81 | ] |
79 | } | 82 | } |