Я использую angular-translate для отображения разных языков в своем приложении, но получаю сообщение об ошибке при попытке обновить данные перевода после успешного входа в систему или через другие вызовы веб-сервисов.
Примечание: я успешно вызываю $translateProvider.useLoader
в моем «app.config» для установки данных перевода по умолчанию. Но мне нужно динамически обновлять эти данные в приложении после любого вызова веб-службы, поскольку данные языка зависят от зарегистрированной организации пользователя (или могут быть изменены в любое время).
Это код, который я пытался что дает мне $translateProvider
ошибку без ссылок:
var ctrl = angular.module('app.ctrls', ['pascalprecht.translate']);
ctrl.controller('LoginCtrl', ['$translate'
,'$translateProvider' // << error!
, function($translate
, $translateProvider) {
...
// call web service to refresh "translations" in $translateProvider
}]);
FYI, приложение представляет собой мобильное приложение с использованием структуры Ionic, которая основана на angularjs.
Мое решение теперь заключается в том, чтобы сохранить любой загруженный файл LanguageData в локальном хранилище, а затем прочитать его, если он доступен, когда фаза конфигурации снова запускается. Проблема с этим обходным путем заключается в том, что пользователю необходимо убить или выйти из приложения на своем мобильном телефоне, чтобы фаза конфигурации была выполнена снова. В идеале я хотел бы, чтобы новые данные вступили в силу немедленно (или, по крайней мере, без необходимости убивать приложение). –
SOLVED - в соответствии с ответом JB Nizet. Я призываю $ translate.refresh() всякий раз, когда вызов веб-службы возвращает индикатор, чтобы сказать, что данные языка изменились. Это вызывает $ translateProvider.useLoader(), который я установил в своем «app.config», что является удовлетворительным решением. Первоначально я пытался установить данные на основе полезной нагрузки из * любого * вызова веб-службы (если таковой был), но это сохраняет чистоту и простоту. –