【问题标题】:Clear rootscope ionic framework清除 rootscope 离子框架
【发布时间】:2016-02-03 23:14:45
【问题描述】:

嗨,我正在为 ionic 应用程序登录.....并且我正在使用 rootscope,就像在所有控制器中使用的全局变量一样 (LoginCtrl,SalirCtrl) 当用户登录时,我将他的信息保存在一个 rootscope 变量并在 SalirCtrl 中显示该信息。

但是当用户注销和其他用户登录时,SalirCtrl 中不存在他的信息。

有人知道。

登录控制

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 login scope ionic-framework rootscope


    【解决方案1】:

    我的猜测是您正在遭受 AngularJS UI-Router 中的缓存。在你的路由配置中,当你这样做时会发生什么?:

    $stateProvider.state('myState', {
       cache: false,
       url : '/myUrl',
       templateUrl : 'my-template.html'
    })
    

    默认情况下,Ionic 会缓存视图,如下所述:

    http://ionicframework.com/docs/api/directive/ionNavView/

    当视图被缓存时,您的控制器不会在导航期间重新加载。让我知道这是否成功?

    最好的,

    【讨论】:

      【解决方案2】:

      您的目标是实现一个用户服务,它可以存储用户凭据并且可以从您的所有控制器访问。请参阅下面的示例实现:

      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
        }
      
        ...
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-25
        • 2016-11-12
        • 2015-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多