Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 共享服务的模型是';AngularJS中的t更新_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript 共享服务的模型是';AngularJS中的t更新

Javascript 共享服务的模型是';AngularJS中的t更新,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,使用,我有两个控制器在我的应用程序中共享相同的服务。 当我触发由portalController函数控制的事件时(请参见setLang()),我看不到applicationController的模型正在更新 这个问题似乎只出现在Firefox和Chrome上。在IE8中,它出人意料地工作良好 便携式控制器 应用控制器 共享用户服务 JSFIDLE 问题是我使用的是$scope而不是$rootScope, 数据通过服务中的第一个控制器更新,但没有任何信息通知第二个控制器此更改: 第一个控制器中通知

使用,我有两个控制器在我的应用程序中共享相同的服务。 当我触发由
portalController
函数控制的事件时(请参见
setLang()
),我看不到applicationController的模型正在更新

这个问题似乎只出现在Firefox和Chrome上。在IE8中,它出人意料地工作良好

便携式控制器 应用控制器 共享用户服务 JSFIDLE
问题是我使用的是$scope而不是$rootScope,
数据通过服务中的第一个控制器更新,但没有任何信息通知第二个控制器此更改:

第一个控制器中通知$rootScope更改的代码 第二个控制器中的代码监视更改 下面是一个指向“错误”小提琴的链接,当其他人也有此问题时,该链接适用:

错误的:

工作一:

问题是我使用的是$scope而不是$rootScope,
数据通过服务中的第一个控制器更新,但没有任何信息通知第二个控制器此更改:

第一个控制器中通知$rootScope更改的代码 第二个控制器中的代码监视更改 下面是一个指向“错误”小提琴的链接,当其他人也有此问题时,该链接适用:

错误的:

工作一:

你能创建一个JSFIDLE吗?这是小提琴的链接:你能创建一个JSFIDLE吗?这是小提琴的链接:
(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.prototype.getUserApplications = function(entity){
    var locale = this.getUserinfoLocale();
        return this.userApplications.query({locale: locale, entity: entity});
};
$scope.setLang = function(locale){
        $rootScope.data = sharedService.getData(locale);
};
    $rootScope.$watch('data', function(newValue) {
        $scope.data = newValue;
    });