Ich würde Variable in Controller, die für Navbar verwenden, neu laden.AngularJS Reload Controller Variable
Ich habe Controller für jede Ansicht. Ich benutze einen Controller, loginCtrl, um mich anzumelden, nachdem ich mich angemeldet habe, ich würde die var-set in "rootController" neu laden.
Ich benutze eine Variable für NG-If, um die Schaltfläche Anmelden und Abmelden in Navbar zu wechseln, aber diese Variable (in RootController) wird eine Factory-Funktion aufrufen.
Das Problem ist, dass Variable einmal gesetzt ist nicht ändern, wenn ich Wert der Fabrik ändern. Die Lösung ist nur rootController neu zu laden, um var zurückzusetzen, suche im Internet nach $ route.reload(). Ich habe eine Funktion in rootController erstellen und ich verwende es so:
$rootScope.reload = function(){ $timeout(function() {
$route.reload();
}, 0);
};
, aber wenn ich in einem anderen Controller rufen Sie die App lädt die Unendlichkeit.
Wie lösen Sie es?
EDIT:
angular.module('appModule',[])
.controller('AppCtrl',function ($scope,$rootScope,UserLogged){
$scope.isLogged = UserLogged.isLogged();
$scope.user = UserLogged.get();
});
.config(...) // To configure route, one route have loginCtrl as controller
.controller('loginCtrl',function($scope,$http,UserLogged){
$http.get(..).sucess(function(data){UserLogged.set(data)})
// call a WS to setup the factory UserLogged
)
.factory('UserLogged',function(){
var userLogged
var isLogged
// set and get method
}
Alle Arbeiten in Ordnung, aber wenn ich die isLogged var in der Fabrik aktualisieren die App nicht aktualisiert $ in AppCtrl scope.isLogged. Die Lösung lädt AppCtrl neu, um UserLogged.get() aufzurufen und $ scope.isLogged mit dem neuen Wert zurückzusetzen.
GELöST:
@ rtvalluri Dank
// App control
$scope.$on('loginLogout',function(){
$scope.isLogged = UserLogged.isLogged();
$scope.userLogged = UserLogged.get();
});
// loginCtrl
$http.get(..).sucess(function(data){
UserLogged.set(data);
$scope.$emit('loginLogout');
})
Können Sie die Code-Form loginCtrl verwenden, um die Variable in der Fabrik zu setzen, post den vollständigen Fabrikcode und Post wie Die rootCtrl verwendet die Variable ab Werk? – GPicazo
So emittiert das Ereignis gelöst Ihr Problem endlich;) Prost .. :) @ Fabrizio – rtvalluri