2015-11-19 4 views
1

http://codepen.io/leongaban/pen/PPLVNY?editors=101Как обнаружить, когда открыт ionicSideMenu?

enter image description here

Я пытаюсь иметь изменение флага уага, когда левая панель открыта в ионном приложении.

Я found this и попытался ее реализации, но переменная не изменяется и я не вижу console.log о.

Markup

<script id="templates/home.html" type="text/ng-template"> 
    <ion-view view-title="Welcome"> 
    <ion-content class="padding"> 
     <h1>{{changeMe}}</h1> 
     <p>Swipe to the right to reveal the left menu.</p> 
     <p>(On desktop click and drag from left to right)</p> 
    </ion-content> 
    </ion-view> 
</script> 

Контроллер

.controller('MainCtrl', function($scope, $ionicSideMenuDelegate, $ionicPlatform) { 
    $scope.changeMe = "This should change if left panel is open" 
    $scope.attendees = [ 
    { firstname: 'Nicolas', lastname: 'Cage' }, 
    { firstname: 'Jean-Claude', lastname: 'Van Damme' }, 
    { firstname: 'Keanu', lastname: 'Reeves' }, 
    { firstname: 'Steven', lastname: 'Seagal' } 
    ]; 

    $scope.toggleLeft = function() { 
    $ionicSideMenuDelegate.toggleLeft(); 
    }; 

    $ionicPlatform.registerBackButtonAction(function (event) { 
    $ionicSideMenuDelegate.toggleLeft(); 
    $ionicSideMenuDelegate.$getByHandle('sideMenu').toggleLeft(); 
    $timeout (function() { 
     $scope.changeMe = "CHANGED! Left panel is open!"; 
     console.log ("Status of SIDE MENU IS : " + $ionicSideMenuDelegate.$getByHandle('sideMenu').isOpen()); 
    },1000); 
    }, 100); 
}) 

попытался Также это:

.run(function($ionicPlatform, $ionicSideMenuDelegate) { 
    $ionicPlatform.registerBackButtonAction(function(e) { 
    e.preventDefault(); 
    if (!$ionicSideMenuDelegate.isOpen()) { 
     console.log('isOPEN!'); 
    } 

    if (!$ionicSideMenuDelegate.isOpenLeft()) { 
     console.log('OPEN!'); 
     $ionicSideMenuDelegate.toggleLeft(); 
    } else { 
     console.log('Closed!'); 
    } 
    }, 1000); 
}) 

ответ

1

getOpenRatio работал! isOpen не работает и isOpenLeft не работает для меня.


$scope.$watch(function() { 
    return $ionicSideMenuDelegate.getOpenRatio(); 
}, 
function (ratio) { 
    if (ratio === 1){ 
    console.log('ratio is true'); 
    $scope.isActive= true; 
    } else{ 
    $scope.isActive = false; 
    console.log('ratio is false'); 
    } 
}); 

UPDATE: Просто установил его в моем фактическом приложение, как хорошо! У меня было 2 ion-side-menus вместо того, чтобы просто 1.

<ion-side-menus class="ion-home"> 
    <!-- <ion-side-menus enable-menu-with-back-views="false"> --> 
+0

Отлично, это работает в CodePen, но не в моем реальном приложении: / –

1

isOpenLeft() работает со мной. :)
Я использую приведенный ниже код для обнаружения открытого или закрытого меню слайдов.

$scope.$watch(function() { 
     return $ionicSideMenuDelegate.isOpenLeft(); 
     }, 
     function (isOpen) { 
     if (isOpen){ 
      console.log("open"); 
     } else{ 
      console.log("close"); 
     } 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^