您正在$scope.$apply(...)函数内部使用,changeLang因此会遇到常见的“已经摘要”错误。您不需要将调用getTranslation放入$scope。$ apply(…)块内,因为ng-click您已经照顾好了。删除它,它应该就可以了。另外,我建议为dev开发人员使用非缩小版本的angular来运行,以便在控制台中看到更好的错误。
解决方法我正在尝试更新$ 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:450at 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:382at https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js:186:390at 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='https://www.6hehe.com/wenda/22419.html#' ng-click='changeLang(’de’)'>DE</a> | <a href='https://www.6hehe.com/wenda/22419.html#' ng-click='changeLang(’fr’)'>FR</a></p> <div>{{ translation.text }}</div> <---- Example variable I want updated. ...
我还要对每个加载的页面使用ngRoute和单独的控制器,是否与它有关系?