Начнем с того, что я впервые пробую AngularJs (1.6), и у меня недостаточно опыта, поэтому я могу задавать неправильные вопросы.
Итак, недавно я начал работать над сборкой проекта на AngularJS.1.6.
Задача, которую я должен выполнить, - запустить скрипт на определенных маршрутах.Допустим, на данный момент скрипт выглядит следующим образом:
alert('Hello World');
После долгого исследования я обнаружил, что должен использовать $state
, из которого я могу получить доступ к $state.current.name
изатем в своем коде я могу использовать оператор if
или оператор switch
для запуска моего кода.
Проблема с этим решением состоит в том, что если я пытаюсь получить доступ к $state.current.name
, когда мое приложение загружается, значение является пустой строкой.
Чтобы убедиться, что $state.current.name
возвращает значение в какой-то момент, я сделал следующее:
setTimeout(
() => console.log($state.current.name),
3000
);
и тогда я вижу, чтоУ меня есть нужное значение.
Наконец, я также попробовал методы компонентов жизненного цикла, run()
метод modules
и, наконец, resolver
в маршрутах, но ни один из них не работал для меня.
В любой из сделанных мной попыток $state.current.name
был пуст, хотя всегда работал, когда я использовал setTimeout
.
. В качестве окончательного решения я нашел следующеене элегантный:
var interval = setInterval(
() => {
if ( 0 !=== $state.current.name ) {
clearInterval(interval);
alert('Hello World');
}
},
250
);
Итак, вопрос в том, есть ли лучшее решениечтобы получить доступ к указанному названию маршрута.
Edit # 1
Я просто попробую этот код:
// ...
require('angular')
.module(config.appName, moduleCollection)
.run(
$state => console.log($state.current.name)
);
и все еще становлюсь пустымстрока :(.Любое другое решение?