2016-02-26 53 views
0

當我點擊註銷按鈕時,它改變了狀態,但沒有刷新頁面,因此,我的登錄頁面文本框仍然輸入了數據。如果我使用新數據登錄,則屬性詳細信息http請求不會提取新數據。 我試過了,$ location.path,$ state.go但沒用, 可以請任何人幫我。通過服務離子註銷不清除http服務數據

登錄控制器

.controller('LoginCtrl', function($scope, $rootScope, AuthenticationService,ClientDetails, $ionicPopup, $state) { 

    $scope.data = { clientId: '', lastName: '', email: ''}; 
    $scope.login = function() { 
     AuthenticationService.Login($scope.data.clientId, $scope.data.lastName, $scope.data.email, function(response) { 
      if(response.success) { 
       ClientDetails.setDetails(response.data); 
       $state.go('app.home'); 
       console.log(response); 
      } else { 
       $scope.error = response.message; 
       var alertPopup = $ionicPopup.alert({ 
       title: 'Login failed!', 
       template: $scope.error 
      }); 
      } 
     }); 
    }; 
}) 

獲取屬性:

.factory('PropertyDetails', 
['$http', '$rootScope', 
function ($http, $rootScope) { 
    var clientId = $rootScope.globals.clientDetails.ClientId; 
    var service = {}; 
     service.getProperties = function(callback){ 

      $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded"; 
      var data = ''; var status = ''; var message = ''; 
      var response = {}; 
      var Request = $http({ 
       method: 'GET', 
       url: 'http://example.com/'+clientId, 
       data: data 
      }) 
      Request.success(function(jdata, headers) { 
       if(headers === 200){ 
        if(typeof jdata == 'object'){ 
         status = jdata.Status; 
         message = jdata.Message; 
         data = jdata.Data; 
         $rootScope.globals.properties = data; 
        }else{ 
         status = false; 
         message = "Response data is not a object!"; 
        } 
       }else{ 
        status = false; 
        message = "Something went wrong!"; 
       } 
       //response = { success : status, message : message, data: data }; 
       response = { success : status, message : message, data: $rootScope.globals.properties }; 
       callback(response); 
       //callback($rootScope.globals.properties); 
      }) 
      Request.error(function(data, headers){ 
       if(typeof data == 'object'){ 
        message = data.Message; 
       }else{ 
        message = "Client not found."; 
       } 
       response = { success : false, message : message }; 
       callback(response); 
      }); 

     }; 
     service.clearDetails = function(){ 
      $rootScope.globals.properties = {}; 
     }; 
    return service; 
}]) 

我註銷控制器:

.controller('menuCtrl', function($scope, $rootScope, ClientDetails, PropertyDetails,$timeout,$ionicHistory, $state,$location){ 
$scope.logOut = function(){ 
    ClientDetails.clearDetails(); 
    PropertyDetails.clearDetails(); 
    $timeout(function() { 
    $ionicHistory.clearCache(); 
    $ionicHistory.clearHistory(); 
    $ionicHistory.nextViewOptions({ disableBack: true, historyRoot: true }); 
    $state.go('login'); 
    }, 30); 
} 

})

謝謝

+0

你已經解決了嗎?下次您應該發佈模板HTML,因爲它可能是導致問題的不正確的雙向數據綁定 – Zorgatone

回答

0

多路到第一控制器通話清晰文本框一個時間,如果你想重裝一次數據,您使用

$scope.$on('$ionicView.enter', function() { 
//here some code 
}); 

上面,當你打開網頁此代碼運行的每個時間碼離子加載[負載控制器]。 其簡單的方法。