Ich versuche einige Texte auf einer Seite zu aktualisieren, die Teil von $ scope ist. Aber ich erhalte immer diese Fehlermeldung:
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)
Offensichtlich etwas mache ich falsch. :) Irgendwelche Ideen, wie ich das beheben kann? Ich möchte, dass die Seite auf die neuen Variablen im Bereich aktualisiert wird.
Dies ist der Code, den ich für die Aktualisierung bin mit:
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));
});
});
};
});
die 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.
...
ich bin, auch ngRoute mit separaten Steuerungen für jede Seite, die ich laden zu verwenden, wenn das hat irgendetwas damit zu tun?
Ich bin nicht sicher, ob Ihre Lösung funktioniert oder nicht, aber ich erkannte, dass das Problem etwas anderes ist. getTranslation ist eine Factory, die aufgerufen wird, wenn die Seite geladen wird, aber wenn ich sie ein zweites Mal aufrufe, wird sie ignoriert. Wissen Sie, wie Sie das lösen können? –
Ich muss den getTranslation-Code sehen, aber es hört sich so an, als ob Sie sich mit der 'Singleton'-Lebensdauer eines Dienstes beschäftigen. Denken Sie daran, dass eckig Singleton-Instanzen aus seinem Dependency-Injection-Container ausgibt. – SonOfNun