var now = new Date().getTime();
var initial = {
start: now - 1000 * 60 * 60 * 24, //< The day before.
end: now
};
var initialSize = (initial.end - initial.start);
var zoomCenter = 0.5;
var zoomFactor = 0.3;
var zoomed = {
start: initial.start - (zoomCenter) * (initialSize * -zoomFactor),
end: initial.end + (1 - zoomCenter) * (initialSize * -zoomFactor)
};
var zoomedDate = new Date(Math.floor(zoomed.start)); //< (~~zoomed.start) would overflow.
Нельзя, в angular dirty checking, то есть изменение переменных мониторится с некоторой периодичностью и отрисовывается.
Весь вопрос в том, когда производить эту проверку? Непрерывно, по таймеру? Учитывая, что модель данных может быть довольно сложной, то непрерывно производящиеся проверки могут сильно ухудшить UX. В Angular этот вопрос решается путем автоматического вызова функции $digest после каждого участка кода, предположительно могущего изменить данные. Это ключевой момент — проверка выполняется тогда и только тогда, когда данные могли быть изменены (например, при действии пользователя), и никогда не выполняется в других случаях. Если вы ожидаете изменения данных в какой-то другой момент времени (например, при поступлении события от сервера или завершении какого-либо процесса), вы должны явно указать Angular, что стоит выполнить проверку, вызвав функцию $apply.
Спрайты — приложение не использует CSS для работы с ресурсами (а даже если бы и — то CSS бы получился многомегабайтным). Или Вы не CSS-спрайты имеете в виду?