Tab Information On Route / State Controller


#1

As best I can tell, the only way to know what’s going on in a tabbed scenario is to put a new controller on each tab in a set of tabs. This is how the ionic-angular-cordova-seed example does it.

<tab title="Pets" icon="icon ion-home" ng-controller="PetsTabCtrl">

See this plunker updated to 0.9.19 : http://plnkr.co/edit/2xk9mNHPQWBUo3v8htc1

So, even though an app may have a router or state controller (appCtrl in the sample) , you need a new controller for the tabs. (Trying to put the main controller on each <tab> or the overarching <tabs> causes an injection error.

Is there a way for the active route/state controller to know what is happening in the tabs or to change the current tab?

I’ve dabbled with :

    $scope.$on('viewState.changeHistory', function(viewData) {
        console.log('State has changed!');
        console.log(viewData);
    })

on the main controller. It does work. But to get information about what tab is active, you have to go digging through the targetScope and controllers of viewData.

So, basically I am saying right now, each tab seems to need it’s own controller and there is no way to way a single controller to rule/supervise them all?

Other conversations like this :



#2

So you are thinking more along the lines of:

<tabs ng-controller="TabsCtrl">
    <tab></tab>
    <tab></tab>
</tabs>

And each tab would be able to use TabsCtrl?

// @max


#3

I think that makes a bit more sense rather than having the controller(s) on each tab.