2015-03-11 2 views
0

Я пытаюсь изменить слайдер: plunker, чтобы обновить процентное соотношение процентной ставки, как общее количество чисел, так что он будет прыгать между шагами во время скольжения. Как вычислить круглые проценты как значение в слайдере?Как вычислить общее количество процентов для ширины ползунка?

Функция, отвечающая за это:

function mousemove(event) { 
    scope.percent = Math.max(0, Math.min((event.clientX - scope.l)/scope.w * 100, 100)); 
    if(scope.updateOnDrag) 
    { 
    scope.update(); 
    } 
    scope.redraw(); 
} 
+0

так что вы хотите привязать? –

+0

Я бы привязал индикатор выполнения к текущему значению. – luzny

ответ

1

Вычислить значение left/distance с помощью Math.round()

scope.redraw = function() { 
     var percentMultiplier = scope.percent/100; 
     var steppedPercent = (Math.round(percentMultiplier * scope.range)/scope.range) * 100; 

     scope.btn.css({'display': ngModel.$isEmpty(ngModel.$viewValue) ? 'none' : 'block'}); 
     scope.btn.css({'left': steppedPercent + '%'}); 
     scope.bar.css({'width': steppedPercent + '%'}); 
    }; 
+0

Спасибо, ваше решение работает правильно, только если scope max установлен на 10, если это, например. 30, то значение индикатора выполнения отображается три на каждом шаге. Пример: [plunker] (http://plnkr.co/edit/r9b96OOR19Q1RNFfm0fB?p=preview) – luzny

+1

Обновлен мой ответ. Я дал неправильное решение, потому что я был сосредоточен только на функции, которую вы предоставили, но на самом деле это не подходящее место для этого. Процент в этой функции вычислялся просто отлично. Кстати, при программировании я рекомендую процентные множители (0-1) вместо процентов (0-100). Процент легче понять для обычных людей, но мультипликатор более полезен для расчетов. Забудьте о процентах, пока вам это не понадобится (часть css). – HankScorpio

Смежные вопросы