Sto cercando di aggiornare alcuni testi su una pagina che fa parte di $ scope. Ma continuo a ricevere questo errore:
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)
Ovviamente sto facendo qualcosa di sbagliato. :) Qualche idea su come posso risolvere questo problema? Voglio che la pagina si aggiorni alle nuove variabili nell'ambito.
Questo è il codice che sto utilizzando per l'aggiornamento:
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.
...
sto utilizzando anche ngRoute con controller separati per ogni pagina che carico, se che ha qualcosa da fare con esso?
non sono sicuro se la tua soluzione funziona o no, ma ho realizzato che il problema è un'altra cosa. getTranslation è una factory chiamata quando la pagina viene caricata, ma quando la chiamo una seconda volta viene ignorata. Sai come risolvere? –
Ho bisogno di vedere il codice getTranslation, ma sembra che tu abbia a che fare con la durata di 'singleton' di un servizio. Ricorda che l'angolatura estrae le istanze Singleton dal suo contenitore di Iniezione di Dipendenza. – SonOfNun