2016-05-18 59 views
0

我開發與離子framework.it移動應用程序之後隱藏登錄屏幕上有一個側面菜單與以下鏈接混合離子移動應用程序:登錄成功

1.Home

1.登陸

2 。關於

3.Settings

當用戶登錄我想在側菜單中的login更改爲myprofile聯繫

在登錄控制器

.controller('LoginCtrl',function($scope,$http,$ionicPopup,$state){ 
    $scope.login=function(user){ 
     //http call for login api 
     //set the auth token 
     window.localStorage.setItem('usertoken',response.token); 
     $state.go('app.profile'); 
    } 
}}) 

在菜單控制器

.controller('MenuCtrl', function($scope, $ionicModal, $timeout) { 

    //shows the login link when the user is not logged in othewise show profile. 
    if(window.localStorage.getItem('usertoken')==null){ 
     $scope.showloginlink=true; 
     $scope.showprofilelink=false; 
    }else{ 
     $scope.showloginlink=false; 
     $scope.showprofilelink=true; 
    } 

}); 

這裏是htmll

<ion-list > 
     <ion-item menu-close href="#/app/login" ng-show="showloginlink"> 
      Login 
     </ion-item> 
     <ion-item menu-close href="#/app/profile" ng-show="showprofilelink"> 
      Profile 
     </ion-item> 

它這麼想的顯示登錄後的配置文件鏈接的問題,但是當我刷新整個頁面,它會按我期望的那樣工作 如何解決這個問題?

UPDATE

我已經解決了通過重載問題的狀態

$state.go('app.profile',null,{reload: true}); 

但我西港島線得到另一個錯誤,側菜單從我user_profilepage 失蹤我在menu.html加入這個enable-menu-with-back-views="true" ,但我仍然有菜單丟失問題:(

注意:我使用我ONIC標籤模板

+0

您是否嘗試過$超時:

.controller('LoginCtrl',function($scope,$http,$ionicPopup,$state, $timeout){ 

然後,替換$範圍$從以前的上市申請解?它對你有用嗎? –

回答

0

嘗試包裝你的分配與$應用,像這樣:

$scope.$apply(function() { 
    if(window.localStorage.getItem('usertoken')==null){ 
     $scope.showloginlink=true; 
     $scope.showprofilelink=false; 
    }else{ 
     $scope.showloginlink=false; 
     $scope.showprofilelink=true; 
    }  
}); 

如果你得到一個錯誤說摘要已在運行,換出$範圍$適用與$超時,這是您需要注入的服務。如果您未指定特定的延遲,則會將更新推遲到下一個摘要。

因此,首先可以將其作爲一個參數,注入到你的控制器:

$timeout(function() { 
    if(window.localStorage.getItem('usertoken')==null){ 
     $scope.showloginlink=true; 
     $scope.showprofilelink=false; 
    }else{ 
     $scope.showloginlink=false; 
     $scope.showprofilelink=true; 
    }  
}); 
+0

如何在'timeout'中包裝'$ scope.apply'?,我將得到摘要已經運行的錯誤 –

+0

我更新了答案,以顯示如何使用$ timeout的正確示例。 –

相關問題