You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view class="u-demo">
<view class="u-demo-wrap">
<view class="u-demo-title">演示效果</view>
<view class="u-demo-area">
<u-toast ref="uToast"></u-toast>
<view class="u-no-demo-here">如果使用text-align: center对齐数字滚动期间可能会抖动见文档说明</view>
<view class="count-to-demo">
<u-count-to
class="count-to"
:useEasing="useEasing"
ref="uCountTo"
:autoplay="autoplay"
:startVal="startVal"
:endVal="endVal"
:duration="duration"
:decimals="decimals"
:bold="bold"
@end="end"
></u-count-to>
</view>
</view>
</view>
<view class="u-config-wrap">
<view class="u-config-title u-border-bottom">参数配置</view>
<view class="u-config-item">
<view class="u-item-title">状态</view>
<u-subsection :current="current" :list="['启动', '暂停', '继续', '重置']" @change="statusChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">目标值</view>
<u-subsection :list="[608, 5604, 45617]" @change="endValChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">滚动时间</view>
<u-subsection current="1" :list="[1000, 2000, 3000]" @change="durationChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">显示小数</view>
<u-subsection current="1" :list="['是', '否']" @change="decimalsChange"></u-subsection>
</view>
<view class="u-config-item">
<view class="u-item-title">字体加粗</view>
<u-subsection current="1" :list="['是', '否']" @change="boldChange"></u-subsection>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
startVal: 0,
endVal: 608,
separator: ',',
decimals: 0,
duration: 2000,
autoplay: false,
useEasing: true,
current: 3,
isStop: false, // 如果开没启动前,不允许点击状态选项的"继续"按钮否则会导致显示NaN
bold: false
};
},
methods: {
endValChange(index) {
this.endVal = index == 0 ? 608 : index == 1 ? 5604 : 45617;
this.reset();
this.start();
},
durationChange(index) {
this.duration = index == 0 ? 1000 : index == 1 ? 2000 : 3000;
},
boldChange(index) {
this.bold = !!!index;
},
decimalsChange(index) {
this.decimals = index == 0 ? 2 : 0;
},
statusChange(index) {
this.current = index;
if (index == 0) {
this.start();
} else if (index == 1) {
this.stop();
} else if (index == 2) {
this.resume();
} else {
this.reset();
}
},
end() {
this.current = 3;
this.$refs.uToast.show({
type: 'warning',
title: '滚动结束'
});
},
start() {
this.current = 0;
this.isStop = true;
this.$refs.uCountTo.start();
},
stop() {
this.$refs.uCountTo.stop();
},
resume() {
if (!this.isStop) {
this.$refs.uToast.show({
type: 'error',
title: '请开始并暂停后才能继续'
});
this.$nextTick(() => {
this.current = 3;
});
return;
}
this.$refs.uCountTo.resume();
},
reset() {
this.$refs.uCountTo.reset();
}
}
};
</script>
<style lang="scss" scoped>
.count-to-demo {
text-align: center;
}
</style>