mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
[bugfix] Slider: should not emit change event when value not changed (#4087)
This commit is contained in:
parent
7e4795fa24
commit
135531cd03
@ -105,7 +105,8 @@ export default {
|
|||||||
|
|
||||||
| Event | Description | Arguments |
|
| Event | Description | Arguments |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| change | Triggered after value change | value: current rate |
|
| input | Instant triggered when value changed | value: current rate |
|
||||||
|
| change | Triggered after value changed | value: current rate |
|
||||||
| drag-start | Triggered when start drag | - |
|
| drag-start | Triggered when start drag | - |
|
||||||
| drag-end | Triggered when end drag | - |
|
| drag-end | Triggered when end drag | - |
|
||||||
|
|
||||||
|
@ -107,7 +107,8 @@ Slider 垂直展示时,高度为 100% 父元素高度
|
|||||||
|
|
||||||
| 事件名 | 说明 | 回调参数 |
|
| 事件名 | 说明 | 回调参数 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| change | 进度值改变后触发 | value: 当前进度 |
|
| input | 进度变化时实时触发 | value: 当前进度 |
|
||||||
|
| change | 进度变化且结束拖动后触发 | value: 当前进度 |
|
||||||
| drag-start | 开始拖动时触发 | - |
|
| drag-start | 开始拖动时触发 | - |
|
||||||
| drag-end | 结束拖动时触发 | - |
|
| drag-end | 结束拖动时触发 | - |
|
||||||
|
|
||||||
|
@ -96,14 +96,18 @@ export default createComponent({
|
|||||||
const total = this.vertical ? rect.height : rect.width;
|
const total = this.vertical ? rect.height : rect.width;
|
||||||
const value = (delta / total) * this.range + this.min;
|
const value = (delta / total) * this.range + this.min;
|
||||||
|
|
||||||
|
this.startValue = this.value;
|
||||||
this.updateValue(value, true);
|
this.updateValue(value, true);
|
||||||
},
|
},
|
||||||
|
|
||||||
updateValue(value, end) {
|
updateValue(value, end) {
|
||||||
value = this.format(value);
|
value = this.format(value);
|
||||||
this.$emit('input', value);
|
|
||||||
|
|
||||||
if (end) {
|
if (value !== this.value) {
|
||||||
|
this.$emit('input', value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (end && value !== this.startValue) {
|
||||||
this.$emit('change', value);
|
this.$emit('change', value);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -116,3 +116,21 @@ it('bar height', () => {
|
|||||||
|
|
||||||
expect(wrapper).toMatchSnapshot();
|
expect(wrapper).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should not emit change event when value not changed', () => {
|
||||||
|
const wrapper = mount(Slider, {
|
||||||
|
propsData: {
|
||||||
|
value: 50
|
||||||
|
},
|
||||||
|
listeners: {
|
||||||
|
input(value) {
|
||||||
|
wrapper.setProps({ value });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
trigger(wrapper, 'click', 100, 0);
|
||||||
|
trigger(wrapper, 'click', 100, 0);
|
||||||
|
|
||||||
|
expect(wrapper.emitted('change').length).toEqual(1);
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user