mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
fix(Sidebar): should emit change when v-model changed (#6383)
This commit is contained in:
parent
126f2124a2
commit
67a5a8d76c
@ -31,7 +31,7 @@ export default createComponent({
|
|||||||
|
|
||||||
this.$emit('click', this.index);
|
this.$emit('click', this.index);
|
||||||
this.parent.$emit('input', this.index);
|
this.parent.$emit('input', this.index);
|
||||||
this.parent.$emit('change', this.index);
|
this.parent.setIndex(this.index);
|
||||||
route(this.$router, this);
|
route(this.$router, this);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -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() {
|
render() {
|
||||||
return <div class={bem()}>{this.slots()}</div>;
|
return <div class={bem()}>{this.slots()}</div>;
|
||||||
},
|
},
|
||||||
|
@ -7,6 +7,7 @@ test('click event & change event', () => {
|
|||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
template: `
|
template: `
|
||||||
<van-sidebar @change="onChange">
|
<van-sidebar @change="onChange">
|
||||||
|
<van-sidebar-item>Text</van-sidebar-item>
|
||||||
<van-sidebar-item @click="onClick">Text</van-sidebar-item>
|
<van-sidebar-item @click="onClick">Text</van-sidebar-item>
|
||||||
</van-sidebar>
|
</van-sidebar>
|
||||||
`,
|
`,
|
||||||
@ -16,16 +17,17 @@ test('click event & change event', () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.find('.van-sidebar-item').trigger('click');
|
wrapper.findAll('.van-sidebar-item').at(1).trigger('click');
|
||||||
expect(onClick).toHaveBeenCalledWith(0);
|
expect(onClick).toHaveBeenCalledWith(1);
|
||||||
expect(onChange).toHaveBeenCalledWith(0);
|
expect(onChange).toHaveBeenCalledWith(1);
|
||||||
wrapper.vm.$destroy();
|
wrapper.vm.$destroy();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('v-model', () => {
|
test('v-model', () => {
|
||||||
|
const onChange = jest.fn();
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
template: `
|
template: `
|
||||||
<van-sidebar v-model="active">
|
<van-sidebar v-model="active" @change="onChange">
|
||||||
<van-sidebar-item>Text</van-sidebar-item>
|
<van-sidebar-item>Text</van-sidebar-item>
|
||||||
<van-sidebar-item>Text</van-sidebar-item>
|
<van-sidebar-item>Text</van-sidebar-item>
|
||||||
</van-sidebar>
|
</van-sidebar>
|
||||||
@ -35,10 +37,14 @@ test('v-model', () => {
|
|||||||
active: 0,
|
active: 0,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
methods: {
|
||||||
|
onChange,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
wrapper.findAll('.van-sidebar-item').at(1).trigger('click');
|
wrapper.findAll('.van-sidebar-item').at(1).trigger('click');
|
||||||
expect(wrapper.vm.active).toEqual(1);
|
expect(wrapper.vm.active).toEqual(1);
|
||||||
|
expect(onChange).toHaveBeenCalledWith(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('disabled prop', () => {
|
test('disabled prop', () => {
|
||||||
|
@ -20,6 +20,10 @@ const mockItems = [
|
|||||||
text: 'group1',
|
text: 'group1',
|
||||||
children: [mockItem],
|
children: [mockItem],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: 'group2',
|
||||||
|
children: [mockItem],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
test('click-nav event', () => {
|
test('click-nav event', () => {
|
||||||
@ -39,10 +43,10 @@ test('click-nav event', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const navItems = wrapper.findAll('.van-tree-select__nav-item');
|
const navItems = wrapper.findAll('.van-tree-select__nav-item');
|
||||||
navItems.at(0).trigger('click');
|
navItems.at(1).trigger('click');
|
||||||
|
|
||||||
expect(onNavClick).toHaveBeenCalledWith(0);
|
expect(onNavClick).toHaveBeenCalledWith(1);
|
||||||
expect(onClickNav).toHaveBeenCalledWith(0);
|
expect(onClickNav).toHaveBeenCalledWith(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('click-item event', () => {
|
test('click-item event', () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user