AngularJSを使用して、アプリケーションで同じサービスを共有する 2 つのコントローラーがあります。portalController
関数 (「参考文献」を参照)によって制御されるイベントをsetLang()
起動すると、applicationController のモデルが更新されていません。
この問題は、Firefox と Chrome でのみ発生するようです。IE8では、予想外に正常に動作しています。
ポータルコントローラー
(function () {
'use strict';
var controllers = angular.module('portal.controllers');
controllers.controller('portalController', function portalController($scope, UserService, NavigationService, $translate) {
$scope.User = UserService.getUserinfo();
$scope.setLang = function (langKey) {
$translate.uses(langKey);
UserService.setUserinfoLocale(langKey);
UserService.getUserApplications(Constants.key_ESS);
UserService.getUserApplications(Constants.key_MED);
UserService.getUserApplications(Constants.key_SVF);
$.removeCookie(Constants.cookie_locale);
var domain = document.domain;
if (domain.indexOf(Constants.context_acc) != -1 || domain.indexOf(Constants.context_prd) != -1 || domain.indexOf(Constants.context_tst) != -1) {
domain = "." + domain;
$.cookie(Constants.cookie_locale, langKey, {path:"/", domain:domain});
} else {
$.cookie(Constants.cookie_locale, langKey, {path:"/"});
}
};
$scope.logout = function () {
NavigationService.logout();
};
$translate.uses(UserService.getUserinfoLocale());
});
//mainController.$inject = ['$scope','UserInfo'];
}());
アプリケーションコントローラー
(function () {
'use strict';
var controllers = angular.module('portal.controllers');
controllers.controller('applicationController', function ($scope, UserService) {
$scope.ESS = UserService.getUserApplications(Constants.key_ESS);
$scope.SVF = UserService.getUserApplications(Constants.key_SVF);
$scope.MED = UserService.getUserApplications(Constants.key_MED);
});
}());
共有 UserService
UserService.prototype.getUserApplications = function(entity){
var locale = this.getUserinfoLocale();
return this.userApplications.query({locale: locale, entity: entity});
};