http://stackoverflow.com/questions/34749202/how-to-load-the-run-before-the-controller $ionicPlatform.ready is not the first thing to be executed in your ionic application. The $ionicPlatform.ready function is called to tell you that the cordova APIs are ready to be used (it is a wrapper for the cordova deviceReady event). This means that Angular will start bootstrapping your app as soon as the library is loaded without waiting for the $ionicPlatform.ready callback. You can fix this by removing the ng-app="starter" tag from your html body declaration as this instructs angular to immediately bootstrap your application. And instead bootstrap the application manually after ionic.Platform.ready is fired and you have done all of your initialisation. Here a sample code var ionicApp = angular . module ( 'starter' , [ 'ionic' ]); ionicApp . controller ( 'first-select' , function ( $scope ){ $scope . select = function ()...