diff --git a/src/sidebar-item/index.js b/src/sidebar-item/index.js
index 863a1fb5b..41a64767b 100644
--- a/src/sidebar-item/index.js
+++ b/src/sidebar-item/index.js
@@ -31,7 +31,7 @@ export default createComponent({
this.$emit('click', this.index);
this.parent.$emit('input', this.index);
- this.parent.$emit('change', this.index);
+ this.parent.setIndex(this.index);
route(this.$router, this);
},
},
diff --git a/src/sidebar/index.js b/src/sidebar/index.js
index dad186e5b..2485dac6e 100644
--- a/src/sidebar/index.js
+++ b/src/sidebar/index.js
@@ -17,6 +17,27 @@ export default createComponent({
},
},
+ data() {
+ return {
+ index: +this.activeKey,
+ };
+ },
+
+ watch: {
+ activeKey() {
+ this.setIndex(+this.activeKey);
+ },
+ },
+
+ methods: {
+ setIndex(index) {
+ if (index !== this.index) {
+ this.index = index;
+ this.$emit('change', index);
+ }
+ },
+ },
+
render() {
return
{this.slots()}
;
},
diff --git a/src/sidebar/test/index.spec.js b/src/sidebar/test/index.spec.js
index 508eba73f..a3e533410 100644
--- a/src/sidebar/test/index.spec.js
+++ b/src/sidebar/test/index.spec.js
@@ -7,6 +7,7 @@ test('click event & change event', () => {
const wrapper = mount({
template: `
+ Text
Text
`,
@@ -16,16 +17,17 @@ test('click event & change event', () => {
},
});
- wrapper.find('.van-sidebar-item').trigger('click');
- expect(onClick).toHaveBeenCalledWith(0);
- expect(onChange).toHaveBeenCalledWith(0);
+ wrapper.findAll('.van-sidebar-item').at(1).trigger('click');
+ expect(onClick).toHaveBeenCalledWith(1);
+ expect(onChange).toHaveBeenCalledWith(1);
wrapper.vm.$destroy();
});
test('v-model', () => {
+ const onChange = jest.fn();
const wrapper = mount({
template: `
-
+
Text
Text
@@ -35,10 +37,14 @@ test('v-model', () => {
active: 0,
};
},
+ methods: {
+ onChange,
+ },
});
wrapper.findAll('.van-sidebar-item').at(1).trigger('click');
expect(wrapper.vm.active).toEqual(1);
+ expect(onChange).toHaveBeenCalledWith(1);
});
test('disabled prop', () => {
diff --git a/src/tree-select/test/index.spec.js b/src/tree-select/test/index.spec.js
index 39b66c092..8314203ab 100644
--- a/src/tree-select/test/index.spec.js
+++ b/src/tree-select/test/index.spec.js
@@ -20,6 +20,10 @@ const mockItems = [
text: 'group1',
children: [mockItem],
},
+ {
+ text: 'group2',
+ children: [mockItem],
+ },
];
test('click-nav event', () => {
@@ -39,10 +43,10 @@ test('click-nav event', () => {
});
const navItems = wrapper.findAll('.van-tree-select__nav-item');
- navItems.at(0).trigger('click');
+ navItems.at(1).trigger('click');
- expect(onNavClick).toHaveBeenCalledWith(0);
- expect(onClickNav).toHaveBeenCalledWith(0);
+ expect(onNavClick).toHaveBeenCalledWith(1);
+ expect(onClickNav).toHaveBeenCalledWith(1);
});
test('click-item event', () => {