2016-12-02 7 views
1

В главном контроллере я написал:

angular.element(window).load(function() { 
    $timeout(function() { 
     scrollAnchor(); // Scroll to Anchor 
    }); 
}); 

Я бы это, чтобы перейти к последней операции сразу после всех элементов визуализации. Проблема в том, что есть и другие $timeout() с другими функциями. Таким образом, прокрутка не является последней операцией. Есть ли способ ввести приоритет над функциями, выполненными в $timeout?

+0

Пожалуйста, добавьте другие операции, используя '$ timeout'. Таким образом, мы можем предоставить вам хорошее и стабильное решение. Я обещаю, в конце концов, вам не нужен даже один тайм-аут '. – lin

ответ

2

Если вы не указали параметр delay, функция вызывается в следующем цикле дайджеста.

Таким образом, чтобы убедиться, что некоторые задержки выполняются после другие с теми же параметрами, просто установите более высокую задержку.

$timeout(scrollAnchor, 500); 

Или вы могли бы стрелять событие, когда вы знаете, что «все остальное» сделано, а затем выберите, где вы хотите, чтобы прокрутить.

+0

Он сказал, что есть другие таймауты. Таким образом, ваше решение не является стабильным/чистым. Вы должны убедиться, что все остальные операции рендеринга завершены. Работа с задержками - такая проблема в JavaScript, потому что она сильно зависит от производительности клиента. Это может сломать ваше приложение. – lin

+0

@lin, вы правы, это не хорошее решение для использования 500 миллисекунд для меня. Проблема в том, что были использованы другие $ timeout, и я не знаю, когда они закончат свое исполнение. – Labo29

+0

@ Labo29, просто добавьте «другой код операции» в свой вопрос. Мы найдем решение. – lin