123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- function addNum (num1, num2) {
- let sq1, sq2, m;
- try {
- sq1 = num1.toString().split('.')[1].length;
- }
- catch (e) {
- sq1 = 0;
- }
- try {
- sq2 = num2.toString().split('.')[1].length;
- }
- catch (e) {
- sq2 = 0;
- }
- m = Math.pow(10, Math.max(sq1, sq2));
- return (Math.round(num1 * m) + Math.round(num2 * m)) / m;
- }
- Component({
- externalClasses: ['i-class'],
- properties: {
- // small || default || large
- size: String,
- value: {
- type: Number,
- value: 1
- },
- min: {
- type: Number,
- value: -Infinity
- },
- max: {
- type: Number,
- value: Infinity
- },
- step: {
- type: Number,
- value: 1
- }
- },
-
- methods: {
- handleChangeStep(e, type) {
- const { dataset = {} } = e.currentTarget;
- const { disabled } = dataset;
- const { step } = this.data;
- let { value } = this.data;
- if (disabled) return null;
- if (type === 'minus') {
- value = addNum(value, -step);
- } else if (type === 'plus') {
- value = addNum(value, step);
- }
- if (value < this.data.min || value > this.data.max) return null;
- this.handleEmit(value, type);
- },
- handleMinus(e) {
- this.handleChangeStep(e, 'minus');
- },
- handlePlus(e) {
- this.handleChangeStep(e, 'plus');
- },
- handleBlur(e) {
- let { value } = e.detail;
- const { min, max } = this.data;
- if (!value) {
- setTimeout(() => {
- this.handleEmit(value);
- }, 16);
- return;
- }
- value = +value;
- if (value > max) {
- value = max;
- } else if (value < min) {
- value = min;
- }
- this.handleEmit(value);
- },
- handleEmit (value, type) {
- const data = {
- value: value
- };
- if (type) data.type = type;
- this.triggerEvent('change', data);
- }
- }
- });
|