ローカリゼーションCookieを使用して現在のカルチャを追跡しています。アプリケーションが起動するときに現在選択されているカルチャのすべてのメッセージを読み込み、そのカルチャに関する情報と共にlocalStorage
に保存し、選択したカルチャが変更されたときにのみ更新します(localStorage
の値が'CurrentCulture'
の場合)クッキー内に)。 AngularJsでデータをロードできるように異なる実行がいつ終了するのかをどのようにして判断できますか?
getLocalisationsFromServer
終了する前に
app.service("localisationService", function ($q, $http, localStorageService) {
var getCachedMessagesForLanguage = function (localisationMessagesUrl, language) {
console.log('getCachedMessagesForLanguage');
var messages = localStorageService.get('Localisation');
if (!messages || language !== localStorageService.get('Language')) {
getLocalisationsFromServer(localisationMessagesUrl).then(function (serverMessages) {
localStorageService.add('Localisation', messages);
localStorageService.add('Language', language);
});
}
return localStorageService.get('Localisation')
}
function getLocalisationsFromServer(localisationMessagesUrl) {
return $q(function (resolve) {
$http.get(localisationMessagesUrl)
.then(function (response) {
resolve(response.data);
});
});
}
return {
messages: function (localisationMessagesUrl, language) {
return getCachedMessagesForLanguage(localisationMessagesUrl, language);
}
};
});
getCachedMessagesForLanguage
戻りundefined
を持って、localisationService
で $scope.messages = localisationService.messages(localisationMessagesUrl, currentCulture);
を設定します。ページをリフレッシュすると正しく表示されます。これをどうすれば解決できますか?