清晰的 rootscope 离子框架
Clear rootscope ionic framework
您好,我正在登录 ionic 应用程序......我正在使用 rootscope 作为全局变量在所有控制器中使用(LoginCtrl,SalirCtrl)当用户登录时,我保存他的rootscope 变量中的信息并在 SalirCtrl 中显示该信息。
但是当用户注销和其他用户登录时,他的信息不会出现在 SalirCtrl 中。
有人知道。
登录Ctrl
if($scope.datos=='true') {//if token is true. User is log-in
$rootScope.pNombre=data.persona.primerNombre;
$rootScope.sNombre=data.persona.segundoNombre;
$rootScope.pApellido=data.persona.primerApellido;
$rootScope.sApellido=data.persona.segundoApellido;
$state.go('tabs.perfil');
}
SalirCtrl
.controller('SalirCtrl', function($scope, $state, $ionicPopup, ServUsuario,$rootScope,$ionicHistory) {
//para bloquear el boton atras
$ionicHistory.nextViewOptions({
disableAnimate: true,
disableBack: true
});
//FIN para bloquear el boton atras
$scope.pNombre = $rootScope.pNombre;//save in a scope variable rootscope
$scope.sNombre = $rootScope.sNombre;
$scope.pApellido = $rootScope.pApellido;
$scope.sApellido = $rootScope.sApellido;
//METODO SALIR
$scope.salir = function() {
var confirmPopup = $ionicPopup.confirm({
title: 'Log-out',
template: '¿Log-out?'
});
confirmPopup.then(function(res) {
if(res) {
console.log('You are sure');
$state.go('login');
$scope.pNombre=" "; //When log-out is true. Variables equals empty
$scope.sNombre=" ";
$scope.pApellido=" ";
$scope.sApellido=" ";
} else {
console.log('You are not sure');
}
});
};
//FIN METODO SALIR
})
最后我在 perfil.html
中打印变量
{{pNombre}} {{sNombre}} {{pApellido}} {{sApellido}}
谢谢....!
我的猜测是您在 AngularJS UI-路由器中受到缓存的困扰。在你的路由配置中,当你这样做时会发生什么?:
$stateProvider.state('myState', {
cache: false,
url : '/myUrl',
templateUrl : 'my-template.html'
})
默认情况下,Ionic 会按照此处所述缓存视图:
http://ionicframework.com/docs/api/directive/ionNavView/
缓存视图后,您的控制器不会在导航期间重新加载。让我知道这是否有效?
最佳,
您的目标是实现一个用户 服务,它可以存储用户凭据并且可以从您的所有控制器访问。请参阅下面的示例实现:
angular.module('your-app').service('myUserService', myUserService);
function myUserService() {
var _identity = null;
return {
getUser: getUser,
setUser: setUser,
login: login,
logout: logout
...
};
function getUser() {
return _identity;
}
function setUser(user) {
_identity = user;
}
function login() {
//your login logic here
}
function logout() {
_identity = null;
//other logout logic
}
...
}
您好,我正在登录 ionic 应用程序......我正在使用 rootscope 作为全局变量在所有控制器中使用(LoginCtrl,SalirCtrl)当用户登录时,我保存他的rootscope 变量中的信息并在 SalirCtrl 中显示该信息。
但是当用户注销和其他用户登录时,他的信息不会出现在 SalirCtrl 中。
有人知道。
登录Ctrl
if($scope.datos=='true') {//if token is true. User is log-in
$rootScope.pNombre=data.persona.primerNombre;
$rootScope.sNombre=data.persona.segundoNombre;
$rootScope.pApellido=data.persona.primerApellido;
$rootScope.sApellido=data.persona.segundoApellido;
$state.go('tabs.perfil');
}
SalirCtrl
.controller('SalirCtrl', function($scope, $state, $ionicPopup, ServUsuario,$rootScope,$ionicHistory) {
//para bloquear el boton atras
$ionicHistory.nextViewOptions({
disableAnimate: true,
disableBack: true
});
//FIN para bloquear el boton atras
$scope.pNombre = $rootScope.pNombre;//save in a scope variable rootscope
$scope.sNombre = $rootScope.sNombre;
$scope.pApellido = $rootScope.pApellido;
$scope.sApellido = $rootScope.sApellido;
//METODO SALIR
$scope.salir = function() {
var confirmPopup = $ionicPopup.confirm({
title: 'Log-out',
template: '¿Log-out?'
});
confirmPopup.then(function(res) {
if(res) {
console.log('You are sure');
$state.go('login');
$scope.pNombre=" "; //When log-out is true. Variables equals empty
$scope.sNombre=" ";
$scope.pApellido=" ";
$scope.sApellido=" ";
} else {
console.log('You are not sure');
}
});
};
//FIN METODO SALIR
})
最后我在 perfil.html
中打印变量{{pNombre}} {{sNombre}} {{pApellido}} {{sApellido}}
谢谢....!
我的猜测是您在 AngularJS UI-路由器中受到缓存的困扰。在你的路由配置中,当你这样做时会发生什么?:
$stateProvider.state('myState', {
cache: false,
url : '/myUrl',
templateUrl : 'my-template.html'
})
默认情况下,Ionic 会按照此处所述缓存视图:
http://ionicframework.com/docs/api/directive/ionNavView/
缓存视图后,您的控制器不会在导航期间重新加载。让我知道这是否有效?
最佳,
您的目标是实现一个用户 服务,它可以存储用户凭据并且可以从您的所有控制器访问。请参阅下面的示例实现:
angular.module('your-app').service('myUserService', myUserService);
function myUserService() {
var _identity = null;
return {
getUser: getUser,
setUser: setUser,
login: login,
logout: logout
...
};
function getUser() {
return _identity;
}
function setUser(user) {
_identity = user;
}
function login() {
//your login logic here
}
function logout() {
_identity = null;
//other logout logic
}
...
}