清晰的 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
  }

  ...
}