Один из вариантов — перехватить событие $translatePartialLoaderStructureChanged. Который будет запущен только после того, как часть будет доступна.
Чтобы убедиться, что деталь доступна:
$rootScope.$on('$translatePartialLoaderStructureChanged', function (e, Part_Name) {
if (Part_Name === 'PartThatYouNeed') {
$translate.refresh().then(function () {
$translate(translateKey);
});
}
});
Или, возможно, лучший вариант, если это будет использоваться во всем вашем приложении, вы можете перехватить это событие и вызвать функцию обновления в вашей команде запуска приложений, как это
app.run(function ($state, $rootScope, $translate) {
$rootScope.$on('$translatePartialLoaderStructureChanged', function (e, Part_Name) {
$translate.refresh();
});
});
И если вам нужно запустить код установки после того, как языковая таблица станет доступной, я бы предложил запустить rootScope после завершения обновления:
app.run(function ($state, $rootScope, $translate) {
$rootScope.$on('$translatePartialLoaderStructureChanged', function (e, Part_Name) {
$translate.refresh().then(function () {
$rootScope.$emit('ApplicationTranslationsRefreshed', Part_Name);
});
});
});
После этого в любом месте вашего приложения вы можете подключить событие ApplicationTranslationsRefreshed, чтобы узнать, когда можно использовать $translate('key_that_is_in_the_new_part'):
$rootScope.$on('ApplicationTranslationsRefreshed', function (e, Part_Name) {
console.debug(Part_Name + "is now avaialable")
});
person
davmelmeggeo
schedule
05.05.2015