javascript - angularjs $scope.$apply() 给出此错误 : Error: [$rootScope:inprog]

标签 javascript angularjs

我正在尝试更新属于 $scope 的页面上的一些文本。但我不断收到此错误:

Error: [$rootScope:inprog] [http://errors.angularjs.org/1.2.15/$rootScope/inprog?p0=%24apply][1]
at Error (native)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:6:450
at m (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:101:443)
at h.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:108:301)
at h.$scope.changeLang (http://treenovum.es/xlsmedical/js/medical-app.js:80:16)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:169:382
at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:186:390
at h.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:108:40)
at h.$apply (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:108:318)
at HTMLAnchorElement.<anonymous> (https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:186:372) 

显然我做错了什么。 :) 关于如何解决这个问题的任何想法?我希望页面更新为作用域中的新变量。

这是我用于更新的代码:

medicalApp.controller('MainCtrl', function($scope, $cookies, getTranslation) {
    getTranslation.get(function(data){
        $scope.translation = data;
    });

    $scope.changeLang = function (lang) {
        console.log(lang);
        $cookies.lang = lang;
        $scope.$apply(function(){
            getTranslation.get(function(data){
                $scope.translation = data;
                console.log(JSON.stringify($scope.translation));
            });
        });
    };
});

html:

<body ng-controller="MainCtrl">
    ...
            <div class="header-lang col-xs-4">
                <p>
                    <a href="#" ng-click="changeLang('de')">DE</a> | 
                    <a href="#" ng-click="changeLang('fr')">FR</a></p>
            <div>{{ translation.text }}</div>  <---- Example variable I want updated.
    ...

我还在为我加载的每个页面使用带有单独 Controller 的 ngRoute,是否与它有任何关系?

最佳答案

如果您的模板在更改模型后没有更改,并且您需要使用 $scope.$apply,您可以使用 $scope.$applyAsync 代替它。

https://github.com/angular-ui/ui-codemirror/issues/73

关于javascript - angularjs $scope.$apply() 给出此错误 : Error: [$rootScope:inprog],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23128220/

相关文章:

javascript - 如何使用 react 根据选择输入更改 handleChange 操作?

Angularjs:如何在指令中读取对象

javascript - 在平板电脑/手机上重用 Nav 作为下拉菜单

javascript - 无法在链接函数内调用 ng-click 函数

javascript - Angular ng-if 用于检查空字符串不起作用

angularjs - ElectronJs 与 AngularJs : Cookies are not holding values if application is restarted

javascript - 如何将缓存中的文件与服务器中的文件进行比较

javascript - addEventListener 方法是文档对象的一部分吗?

javascript - Windows 7 上的 ActiveX 抛出“"Object doesn' t 支持属性或方法”错误

javascript - 如何让 Discord Bot 检测表情符号 react 并单击(触发)它