1

Я начал приложение sideMenu в ионном режиме и попытался выполнить его. Изначально, ionicModal используется для отображения логина, поэтому я меняю его с помощью элемента списка -ий;Как скрыть кнопку входа в систему после успешного входа в систему Ionic?

<ion-side-menu side="left" > 
    <ion-header-bar class="bar-stable bar-dark"> 
     <a ng-click="redirectToWeb()" > <h1 class="title">NerdApp</h1></a> 
    </ion-header-bar> 
    <ion-content > 
     <ion-list class="BGcolorDG"> 
     <ion-item nav-clear menu-close class="BGcolorDG item item-icon-left item-content-modified" href="#/app/login" ng-show="control.showLogin" > <!--ng-click="login()" --> 
      <i class="icon ion-locked"></i> <span>Login</span> 
     </ion-item> 
     <ion-item nav-clear menu-close href="#/app/search" class="item item-icon-left BGcolorDG item-content-modified"> 
      <i class="icon ion-search"></i><span>Search</span> 
     </ion-item> 
     <ion-item nav-clear menu-close href="#/app/browse" class="item item-icon-left BGcolorDG item-content-modified"> 
      <i class="icon ion-ios-browsers"></i><span>Browse</span> 
     </ion-item> 
     <ion-item nav-clear menu-close href="#/app/playlists" class="item item-icon-left BGcolorDG item-content-modified"> 
      <i class="icon ion-music-note"></i> <span>Playlists</span> 
     </ion-item> 
     </ion-list> 
    </ion-content> 
    </ion-side-menu> 

и обеспечивают routeState в

state('app', { 
    url: "/app", 
    abstract: true, 
    templateUrl: "templates/menu.html", 
    controller: 'AppCtrl' 
}) 
.state('app.login', { 
     url: "/login", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/login.html", 
       controller: "LoginCtrl" 
      } 
     } 
    }) 
.state('app.home', { 
     url: "/home", 
     views: { 
      'menuContent': { 
       templateUrl: "templates/home.html", 
       controller: "HomeCtrl" 
      } 
     } 
}) 

и маршрут по умолчанию для домашнего контроллера.

$urlRouterProvider.otherwise('/app/home'); 

контроллер приложения как

.controller('AppCtrl', function($scope,$timeout,$location,$rootScope) { 
     $scope.control = { 
      showLogin:true 
     }; 

     if($rootScope.showLogin != undefined && $rootScope.showLogin == false){ 
      $scope.control.showLogin = false; 
     }   
}) 

Внутри loginControl я проверка и перенаправляет его обратно домой, как контроллер

$scope.login = function() { 
      if ($scope.loginData.username == 'hassaan' && $scope.loginData.password == 'khan') { 
       $rootScope.showLogin = false; 
       // $location.path('#/app'); 
       $state.go('app.home'); 
      }else{ 
      alert('Incorrect credentials'); 
      } 
     } 

я старался как $ location.path и $ состояние .go и то, что он делает, перенаправляется на домашнюю страницу, но «не показывает sidemenu», и когда я проверяю в браузере, он скрывает скрытый sidemenu.

Поток изображений тестируемого приложения как

Initial View

Side Menu Showing Login After login sidemenu hiding

ответ

1

использования Try $ rootScope передать его AppCtrl

.controller('AppCtrl', function (...., $rootScope) { 
     // and then 
     $rootScope.control = { 
      showProfile: false 
     }; 

после успеха authe ntication - сделать это правда

$rootScope.control = { 
    showProfile: true 
}; 

Теперь он должен работать, как вы ожидали

0

Не используйте $ rootscop, если вам не нужно.
Вы можете отправлять переменные другим контроллерам с маршрутизатором из углового с использованием параметров.

.state('menu.employeeInfo', { 
     url: '/employeeInfo', 
     views: { 
      'side-menu21': { 
       templateUrl: 'templates/employeeInfo.html', 
       controller: 'employeeInfoCtrl'    
      } 
     }, 
     params: { 
      appointmentObj: null, 
      subassignmentObj: null 
     } 
    }) 

Затем вы можете передать эти вары следующим образом.

$scope.gotoAppointment = function (Appointment, Subassignment) { 
      $state.go('menu.employeeInfo', { appointmentObj: Appointment, subassignmentObj: Subassignment }, { reload: true }); 
     } 
Смежные вопросы