2016-02-22 36 views
0

我有側面菜單有家,登錄,儀表板,註銷(項目)的離子應用程序。隱藏基於用戶登錄的菜單,以角度js登出

我正在使用服務器api登錄用戶,我想在使用時記錄在側面菜單項登錄不在那裏和儀表板,註銷添加,當用戶註銷時,他可以看到登錄但不註銷和accoun菜單。

下面是我的代碼:

http://codepen.io/gauravcoder/pen/bEjGNa

<!DOCTYPE html> 
 
<html ng-app="ionicApp"> 
 
<head> 
 
<meta charset="utf-8"> 
 
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
 
<title>Ionic page</title> 
 
<link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet"> 
 
<script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script> 
 
<script src="//code.jquery.com/jquery-1.11.3.js"></script> 
 
<script src="//fabricjs.com/lib/fabric_with_gestures.js"></script> 
 
    
 
    
 
    
 
</head> 
 

 
<body ng-controller="HomeTabCtrl"> 
 

 

 
<ion-side-menus> 
 
    <ion-side-menu-content> 
 
    <ion-nav-view animation="slide-left-right"> </ion-nav-view> 
 
    </ion-side-menu-content> 
 

 
    <ion-side-menu side="right"> 
 
    <div class="list"> 
 
    <a class="item item-icon-left" href="#"><i class="icon ion-email"></i> Check mail</a> 
 
    <a class="item item-icon-left" href="#login" ng-hide="show_menu" > <i class="icon ion-chatbubble-working" ></i>Login</a> 
 
    <a class="item item-icon-left" href="#account" ng-hide="show_menu"> <i class="icon ion-mic-a"></i> Account</a> 
 

 
    <a class="item item-icon-left" href="#" ng-hide="show_menu"> <i class="icon ion-mic-a"></i> Logout</a> 
 
    </div> 
 
    </ion-side-menu> 
 
</ion-side-menus> 
 

 

 
<script id="templates/tabs.html" type="text/ng-template"> 
 
     <ion-tabs class="tabs-striped tabs-positive tabs-top tabs-top-my tabs-icon-only" animation="fade-in-out"> 
 

 
     <ion-tab title="tab1" icon="ion-home" href="#/tab/tab1"> 
 
      <ion-nav-view name="tab1-tab"></ion-nav-view> 
 
     </ion-tab> 
 
     <ion-tab title="tab2" icon="ion-home" href="#/tab/tab2"> 
 
      <ion-nav-view name="tab2-tab"></ion-nav-view> 
 
     </ion-tab> 
 

 
     <ion-tab title="tab3" icon="ion-home" ui-sref="tabs.tab3"> 
 
      <ion-nav-view name="tab3-tab"></ion-nav-view> 
 
     </ion-tab> 
 
\t \t <ion-tab title="tab4" icon="ion-home" ui-sref="tabs.tab4"> 
 
      <ion-nav-view name="tab4-tab"></ion-nav-view> 
 
     </ion-tab> 
 
\t \t <ion-tab title="tab5" icon="ion-home" ui-sref="tabs.tab5"> 
 
      <ion-nav-view name="tab5-tab"></ion-nav-view> 
 
     </ion-tab> 
 
\t \t <ion-tab title="tab6" icon="ion-android-apps" ng-click="toggleRightSideMenu()" ui-sref="tabs.tab6"> 
 
     \t \t <ion-nav-view name="tab6-tab"></ion-nav-view> 
 

 
     </ion-tab> 
 

 
     </ion-tabs> 
 
    <ion-footer-bar class="bar-footer btn-footer bar-light"> 
 
    <div class="row"> 
 
    <div class="col"> 
 
     <button class="button button-block button-positive" ng-click='next()'> View cart Page </button> 
 
    </div> 
 
    <div class="col"> 
 
     <button class="button button-block button-calm"> View checkout page </button> 
 
    </div> 
 
    </div> 
 
</ion-footer-bar> 
 
    </script> 
 
<script id="templates/tab1.html" type="text/ng-template"> 
 
     <ion-view view-title="tab1"> 
 
\t \t <div class="my-content-tabs scroll-content ionic-scroll has-header has-footer has-tabs-mytop"> 
 
\t \t \t <div class="row p0"> 
 
\t \t 
 
\t 
 
\t \t \t </div> 
 
\t \t </div> 
 

 
     </ion-view> 
 
</script> 
 
    
 
    
 
    
 
    
 
    
 
    
 
<script id="templates/login.html" type="text/ng-template"> 
 
user name is {{user.name}} 
 
</script> 
 
    
 
    
 
<script id="templates/login.html" type="text/ng-template"> 
 
    
 
    <ion-view view-title="Buy Now" nav-bar-class="bar-balanced" cache-view="false"> 
 
    <ion-header-bar class="bar-positive" align-title="center"> 
 
     <button class="button button-clear button-light" ui-sref='tabs.tab1'><i class="ion-chevron-left"></i></button> 
 
     <h1 class="title">Login</h1> 
 
    </ion-header-bar> 
 
\t </ion-nav-bar> 
 
\t <ion-content class="padding"> 
 

 
\t <div class="list"> 
 
<form method="post" action="" id="form-id"> 
 

 
\t <label class="item item-input"> 
 
\t \t <input type="text" placeholder="Username" id="username"> 
 
\t </label> 
 
\t <label class="item item-input"> 
 
\t \t <input type="password" placeholder="Password" id="password"> 
 
\t </label> 
 
</form> 
 

 
\t 
 
\t </div> 
 
\t 
 
\t <div class="row"> 
 
\t \t <button class="button button-block button-positive" ng-click="signIn()"> 
 
\t \t Login 
 
\t \t </button> 
 
\t </div> 
 

 

 
\t </ion-content> 
 
\t 
 

 
</ion-view> 
 
    
 
    </script> 
 
    
 
    
 
    
 
    
 
<script id="templates/nav-stack.html" type="text/ng-template"> 
 
     <ion-view view-title="Tab Nav Stack"> 
 
     <ion-content class="padding"> 
 
      <p><img src="http://ionicframework.com/img/diagrams/tabs-nav-stack.png" style="width:100%"></p> 
 
     </ion-content> 
 
     </ion-view> 
 
    </script> 
 
    <script id="templates/next.html" type="text/ng-template"> 
 

 

 
    <ion-view view-title="View Cart" nav-bar-class="bar-balanced"> 
 
\t <ion-nav-bar class="bar-positive" align-title="center"> 
 
\t \t <ion-nav-back-button> 
 
\t \t </ion-nav-back-button> 
 
\t </ion-nav-bar> 
 
\t <ion-content class="padding"> 
 
\t 
 
    clicked id : 
 
\t <p> 
 
\t \t <a class="button icon ion-home" href="#/tab/home"> Home</a> 
 
\t \t <a class="button icon ion-chevron-left" href="#/tab/facts"> Scientific Facts</a> 
 
\t </p> 
 
\t </ion-content> 
 
</ion-view> 
 
    
 
</script> 
 
<script> 
 
angular.module('ionicApp', ['ionic', 'ionicApp.controllers', 'ngAnimate']).config(function($stateProvider, $urlRouterProvider) { 
 

 
    $stateProvider 
 
    .state('tabs', { 
 
     url: "/tab", 
 
     abstract: true, 
 
     templateUrl: "templates/tabs.html" 
 
    }) 
 
    .state('tabs.tab1', { 
 
     url: "/tab1", 
 
     views: { 
 
     'tab1-tab': { 
 
      templateUrl: "templates/tab1.html", 
 
      controller: 'Tab1Ctrl' 
 
     } 
 
     } 
 
    }) 
 
    .state('login', { 
 
     url: "/login", 
 
     templateUrl: "templates/login.html", 
 
\t controller: "login" 
 
    }).state('account', { 
 
     url: "/account", 
 
     templateUrl: "templates/account.html", 
 
\t controller: "account" 
 
    }) 
 
    .state('next', { 
 
     url: "/next", 
 
     templateUrl: "templates/next.html", 
 
     controller: "NextController", 
 
    params: { 
 
\t \t \t clickedid: null 
 
\t \t } 
 
    }) 
 
    $urlRouterProvider.otherwise("/tab/tab1"); 
 

 
}).controller('account', function ($scope,$http,$ionicPopup) { 
 

 
}).controller('login', function ($scope,$http,$ionicPopup) { 
 

 
\t $scope.signIn = function() { 
 
\t \t var username = document.getElementById("username").value; 
 
\t \t var password = document.getElementById("password").value; 
 
\t \t $scope.show_menu = true; 
 
\t \t var alertPopup = $ionicPopup.alert({ 
 
\t \t title: 'sucess', 
 
\t \t template: 'now logout and account should show' 
 
\t }); 
 
\t 
 
\t }; 
 
\t 
 
}).controller('HomeTabCtrl', function($scope, $ionicSideMenuDelegate, $state) { 
 
$scope.show_menu = false; 
 
    $scope.toggleLeft = function() { 
 
    $ionicSideMenuDelegate.toggleLeft(); 
 
    }; 
 
    $scope.toggleRightSideMenu = function() { 
 
\t console.log('rigth open') 
 
    $ionicSideMenuDelegate.toggleRight(); 
 
    }; 
 
    console.log('HomeTabCtrl'); 
 
    $scope.next = function(){ 
 
    $state.transitionTo('next'); 
 
    } 
 
}).controller("NextController", function($scope){ 
 
    $scope.showAlert = function(){ alert("I'm a modal window!") } 
 
}); 
 
</script> 
 
</body> 
 
</html>

回答

0

我不是很確定你想要哪些元素可以顯示或隱藏,但除非我想念理解你,爲什麼不直接使用ng-hide或ng-show如下:

<ion-side-menus ng-hide="!show_menu"> 
</ion-side-menus> 

<ion-side-menus ng-show="show_menu"> 
</ion-side-menus> 

https://docs.angularjs.org/api/ng/directive/ngHide

+0

我看你已經更新了你的例子.....現在我很困惑。 – spryce

+0

看到什麼時候沒有登錄隱藏帳戶和登出,當登錄隱藏登錄 – saurav

+0

兄弟剛剛轉到登錄,按提交後提交點擊我設置顯示菜單的值爲true,但我仍然能夠看到側邊欄登錄 – saurav

0

我沒去在你的代碼,但是你可以做一個腳本來檢查,如果在/註銷用戶登錄,只是隱藏在登錄或註銷鏈接。

例如在你的CSS使一個類

.hidden{ 
    display: none; 
} 

然後作出一個腳本來檢查,如果用戶登錄並隱藏,如果他是

if (userLoggedIn){ 
    $(loginButton).addClass("hidden"); 
    $(logoutButton).removeClass("hidden"); 
} 
else{ 
    $(logoutButton).addClass("hidden"); 
    $(loginButton).removeClass("hidden"); 
} 

其中loginButton持有登錄的ID按鈕和相同的logoutButton。

你得到漂移,我希望。

+0

兄弟我想使用角js,我可以使用jquery – saurav

0

首先改變具有以下

<a class="item item-icon-left" href="#login" ng-hide="show_menu" > <i class="icon ion-chatbubble-working" ></i>Login</a> 
<a class="item item-icon-left" href="#account" ng-show="show_menu"> <i class="icon ion-mic-a"></i> Account</a> 

<a class="item item-icon-left" href="#" ng-show="show_menu"> <i class="icon ion-mic-a"></i> Logout</a> 

然後在login控制器的HTML定義signIn功能之前初始化show_menu變量。像

.controller('login', function ($scope,$http,$ionicPopup) { 
    $scope.show_menu = false; 
    $scope.signIn = function() { 
     //your code 
     $scope.show_menu = true; 
     //your other code 

    }; 

}) 
0

這裏是你可以做什麼:

  1. 添加此功能,您的js

function toggleHide(){ var elements = document.getElementsByClassName("toggle-hide"); for(var i = 0; i < elements.length; i++){ elements[i].onclick = function(){ var containerid = this.getAttribute('data-hide-container'); document.getElementById(containerid).classList.toggle('ng-hide'); } } }

我做的,用純JS所以不會是一個問題。

  • 添加到您的CSS:
  • .ng-hide{ display:none; }

  • 您可以使用這樣的:
  • <button class="toggle-hide" data-hide-container="searchMapContainer"></button>

    我創建了具有data-hide-contai的函數ner作爲你想要隱藏的元素的ID。如有必要,您可以改變它以使用類。

  • 呼叫功能toggleHide()要使用在控制器內部。
  • 我希望它有幫助。