Angular / Ionic - controller only runs once

You can put the code you want to run in $ionicView.enter:

controller : function( $scope, $cordovaSQLite ){
    $scope.$on('$ionicView.enter', function() {
        // code to run each time view is entered
    });

    ...
});

See "View LifeCycle and Events": https://ionicframework.com/docs/v1/api/directive/ionView/


Building on @brandyshea's answer, I would like to add if you want to specify no caching in one area/controller/state, and take advantage of the caching in other areas, you can simply use the cache parameter in your $stateProvider for that state.

Disable cache within state provider

$stateProvider.state('myState', {
  cache: false,
  url : '/myUrl',
  templateUrl : 'my-template.html'
})

Alternatively, you can use one of the other methods too:

Disable cache with an attribute

<ion-view cache-view="false" view-title="My Title!">
...
</ion-view>

Disable cache globally The $ionicConfigProvider can be used to set the maximum allowable views which can be cached, but this can also be use to disable all caching by setting it to 0.

$ionicConfigProvider.views.maxCache(0);

References: http://ionicframework.com/docs/api/directive/ionNavView/ and http://ionicframework.com/docs/api/directive/ionView/