O HubSpot tem um bom hodômetro como a biblioteca de transição de números em https://github.com/HubSpot/odometer . Recentemente, usei isso para um projeto Angular.JS e escrevi uma diretiva para implementá-lo.
var el = document.querySelector('.some-element');
od = new Odometer({
el: el,
value: 333555,
// Any option (other than auto and selector) can be passed in here
format: '',
theme: 'digital'
});
od.update(555)
O código acima é um exemplo de implementação de http://github.hubspot.com/odometer . Para nosso uso, iremos converter isso em uma diretiva que pode ser usada em nossas visualizações como abaixo.
<odometer value='countToNumber'></odometer>
Aqui, countToNumber é um modelo em nosso escopo.
Portanto, o código para a diretiva precisa aceitar o modelo e inicializar o plugin Odometer.
angular.module('myApp')
.directive('odometer', function () {
return {
restrict: 'E',
scope : {
endValue : '=value'
},
link: function(scope, element) {
// If you want to change the format, you have to add the necessary
// parameters. In this case I am going with the defaults.
var od = new Odometer({
el : element[0],
value : 0 // default value
});
// update the odometer element when there is a
// change in the model value.
scope.$watch('endValue', function() {
od.update(scope.endValue);
});
}
};
})