Вариант с использованием функции setTimeout как костыль вполне подходит для решения вашей задачи, но унего есть недостаток он срабатывает всегда через определенный интервал времени вне зависимости от скорости загрузки всех компонентов у пользователя (повторная загрузка страницы будет быстрее т.к все компоненты будут загружены из кеша.
Есть второй вариант (более продвинутый) - загрузка после решения всех зависимостей открываемой страницы.
Для этого надо в старте приложения (в теле функции run в файле app.js где связываются контроллеры с адресами страниц) подписаться на событие у
var off=$rootScope.on("$stateChangeSuccess",function(){})
или на событие
var off=$rootScope.on("$routeChangeSuccess",function(){})
в зависимости от того используете ли в вашем приложении ui.route или ngRoute для связывания путей с контроллерами.
В теле функции-обработчике сначало отписывайтесь от события (чтобы дважды не грузить живосайт)
off()
и грузите живосайт