From 28bbef6b6f75bb207441192fd80dd7030c81e885 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 16 Apr 2020 16:26:44 +0800 Subject: [PATCH] fix(Checkbox): get changed value in click event (#6066) --- src/checkbox/test/index.spec.js | 4 +++- src/mixins/checkbox.js | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/checkbox/test/index.spec.js b/src/checkbox/test/index.spec.js index 7d859322d..9d91c366a 100644 --- a/src/checkbox/test/index.spec.js +++ b/src/checkbox/test/index.spec.js @@ -73,7 +73,7 @@ test('checkbox group', async () => { expect(wrapper.vm.result).toEqual(['b']); }); -test('click event', () => { +test('click event', async () => { const onClick = jest.fn(); const wrapper = mount(Checkbox, { listeners: { @@ -82,10 +82,12 @@ test('click event', () => { }); wrapper.trigger('click'); + await later(); expect(onClick).toHaveBeenCalledTimes(1); const icon = wrapper.find('.van-checkbox__icon'); icon.trigger('click'); + await later(); expect(onClick).toHaveBeenCalledTimes(2); }); diff --git a/src/mixins/checkbox.js b/src/mixins/checkbox.js index 11b7577a0..5fc341d67 100644 --- a/src/mixins/checkbox.js +++ b/src/mixins/checkbox.js @@ -69,9 +69,15 @@ export const CheckboxMixin = ({ parent, bem, role }) => ({ if (!this.isDisabled && (iconClicked || !this.labelDisabled)) { this.toggle(); - } - this.$emit('click', event); + // wait for toggle method to complete + // so we can get the changed value in the click event listener + setTimeout(() => { + this.$emit('click', event); + }); + } else { + this.$emit('click', event); + } }, genIcon() {