diff --git a/packages/checkbox/index.vue b/packages/checkbox/index.vue index 2d3b51707..6cd3df7ee 100644 --- a/packages/checkbox/index.vue +++ b/packages/checkbox/index.vue @@ -89,9 +89,7 @@ export default create({ }, isDisabled() { - return this.isGroup && this.parentGroup - ? this.parentGroup.disabled - : this.disabled; + return (this.isGroup && this.parentGroup && this.parentGroup.disabled) || this.disabled; } }, diff --git a/test/unit/components/checkbox.vue b/test/unit/components/checkbox.vue index f3d5d7484..0b824248a 100644 --- a/test/unit/components/checkbox.vue +++ b/test/unit/components/checkbox.vue @@ -1,6 +1,6 @@ diff --git a/test/unit/specs/checkbox.spec.js b/test/unit/specs/checkbox.spec.js index c9e1c52fe..110032883 100644 --- a/test/unit/specs/checkbox.spec.js +++ b/test/unit/specs/checkbox.spec.js @@ -66,6 +66,22 @@ describe('CheckboxGroup', () => { done(); }); }); + + it('click on disabled item', (done) => { + wrapper = mount(CheckboxTestComponent); + + const eventStub = sinon.stub(wrapper.vNode.child, '$emit'); + + const disabledLabel = wrapper.find('.van-checkbox')[2].find('.van-checkbox__label')[0]; + disabledLabel.trigger('click'); + + wrapper.update(); + wrapper.vm.$nextTick(() => { + expect(eventStub.calledOnce).to.be.false; + expect(wrapper.vm.result.indexOf('c')).to.equal(-1); + done(); + }); + }); }); describe('Checkbox', () => {