1

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});
};

JSFiddle

http://jsfiddle.net/GFVYC/1/

4

1 に答える 1