Pedro Justo
Pedro Justo

Reputation: 4289

ionic - side-menu doesn't start opened

I need to open the menu automatically when navigate to a specific page.

but the event is ignored.

I created the menu controller:

.controller('MenuController', function ($scope, $ionicSideMenuDelegate) {
    $scope.toggleLeft = function() {
        $ionicSideMenuDelegate.toggleLeft();
    }; })

and the specific page controller:

.controller('Sem_ConsultasCtrl', function ($scope) {

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

})

in my specific page i have a directive ng-click="btn()" wich works (toggles side-menu when click on button). but if I call ' $scope.toggleLeft(); ' outside of btn() to automatically open the side menu when navigate to specific page nothing happens.

Upvotes: 0

Views: 1614

Answers (1)

Pedro Justo
Pedro Justo

Reputation: 4289

I found the problem:

when I call '$scope.toggleLeft();' outside of btn() the page/template still has not loaded/rendered the DOM. and when I click on button (btn()) works because DOM is already rendered.

to automatically open the side-menu I need to only call '$scope.toggleLeft();' when DOM is already and for achieve that I need to define a Watcher wich do something when occurs some modification to my template:

    $timeout(function () {
        $scope.toggleLeft();
    });

$timeout(function () { //runs after DOM is render} );

This way, is working :)

EDIT:

I was going through my answers and I noticed that this answer was not correct.

calling $timeout triggers a digest cycle that captures differences in the DOM and updates it. other events like clicking a button or writing in a input text triggers a digest cycle, thats why the changes only happened when clicked the button

Upvotes: 2

Related Questions