lin
2026-04-21 b7303576bbf1ae606999130e6aab38b51015d167
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<template>
    <view
        class="uv-slider"
        :style="[$uv.addStyle(customStyle)]"
    >
        <slider
            :min="min"
            :max="max"
            :step="step"
            :value="sliderValue"
            :activeColor="activeColor"
            :backgroundColor="backgroundColor"
            :blockSize="$uv.getPx(blockSize)"
            :blockColor="blockColor"
            :showValue="showValue"
            :disabled="disabled"
            @changing="changingHandler"
            @change="changeHandler"
        ></slider>
    </view>
</template>
<script>
    import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js'
    import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js'
    import props from './props.js'
    export default {
        name: 'uv-slider',
        mixins: [mpMixin, mixin, props],
        computed: {
            sliderValue(){
                return this.value || this.modelValue;
            }
        },
        methods: {
            // 拖动过程中触发
            changingHandler(e) {
                const { value } = e.detail
                // 更新v-model的值
                this.$emit('input', value)
                this.$emit('update:modelValue',value)
                // 触发事件
                this.$emit('changing', value)
            },
            // 滑动结束时触发
            changeHandler(e) {
                const {
                    value
                } = e.detail
                // 更新v-model的值
                this.$emit('input', value)
                this.$emit('update:modelValue',value)
                // 触发事件
                this.$emit('change', value)
            }
        }
    }
</script>