From c7315098532c3d79c98dfb1d5eded3f71ea3a54a Mon Sep 17 00:00:00 2001 From: leonine <326026108@qq.com> Date: Thu, 23 Feb 2017 14:29:49 +0800 Subject: [PATCH] 修复两个问题: 1.如果某行禁用_disabled=true,则这行的_checked,无论如何都是false,因为禁用的目的就是不能选择 2.修复某行设置_disabled=true时,全选状态判断有误的bug --- src/components/table/table-head.vue | 11 +++++++++-- src/components/table/table.vue | 17 ++++++++++------- test/routers/table.vue | 11 +++++++---- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/components/table/table-head.vue b/src/components/table/table-head.vue index b5f96d5..e0dd1d6 100644 --- a/src/components/table/table-head.vue +++ b/src/components/table/table-head.vue @@ -84,16 +84,23 @@ }, isSelectAll () { let isSelectAll = true; + let isAllDisabled = true; if (!this.data.length) isSelectAll = false; for (let i = 0; i < this.data.length; i++) { - if (!this.objData[this.data[i]._index]._isChecked) { + if(this.objData[this.data[i]._index]._isDisabled){ + isAllDisabled = isAllDisabled && true; + continue; + }else{ + isAllDisabled = isAllDisabled && false; + } + if (!this.objData[this.data[i]._index]._isChecked ) { isSelectAll = false; break; } } - return isSelectAll; + return isAllDisabled ? false : isSelectAll; } }, methods: { diff --git a/src/components/table/table.vue b/src/components/table/table.vue index 5607c6f..43787fa 100644 --- a/src/components/table/table.vue +++ b/src/components/table/table.vue @@ -553,8 +553,17 @@ this.data.forEach((row, index) => { const newRow = deepCopy(row);// todo 直接替换 newRow._isHover = false; + if(newRow._disabled){ + newRow._isDisabled = newRow._disabled; + }else{ + newRow._isDisabled = false; + } if (newRow._checked) { - newRow._isChecked = newRow._checked; + if(newRow._isDisabled){ + newRow._isChecked = false; + }else{ + newRow._isChecked = newRow._checked; + } } else { newRow._isChecked = false; } @@ -563,12 +572,6 @@ } else { newRow._isHighlight = false; } - - if(newRow._disabled){ - newRow._isDisabled = newRow._disabled; - }else{ - newRow._isDisabled = false; - } data[index] = newRow; }); return data; diff --git a/test/routers/table.vue b/test/routers/table.vue index b55a79b..a4ec76c 100644 --- a/test/routers/table.vue +++ b/test/routers/table.vue @@ -54,26 +54,29 @@ age: 18, address: '北京市朝阳区芍药居', _highlight: true, - _checked: true + _checked: true, + _disabled: false }, { name: '张小刚', age: 25, address: '北京市海淀区西二旗', - _checked: true + _checked: false, + _disabled: true }, { name: '李小红', age: 30, address: '上海市浦东新区世纪大道', - _checked: false, + _checked: true, _disabled: true }, { name: '周小伟', age: 26, address: '深圳市南山区深南大道', - _checked: true + _checked: true, + _disabled: false } ] } -- libgit2 0.21.4