It's a simple webshop. So I'd like to load several things before show the home page and the controller.
I decided that the index.html will be also the Master Page containing a header, the ui-view for routing templates , a sidebar containing the categories and a footer.
<body ng-app="app">
    <header ng-include="'./templates/masterPage/header.html'"></header>
    <div ui-view></div>
    <sidebar ng-include="'./templates/masterPage/sideBar.html'"></sidebar>
    <footer ng-include="'./templates/masterPage/footer.html'"></footer>
</body>
The things on header, sidebar and footer will came from a json file containgin everything I need such as categories, currency, name of the webshop and others things that's will never changes after load.
So, I created the following app.js...
angular
.module('app', [
    'ui.router'
])
.config(['$urlRouterProvider', '$stateProvider',
    function ($urlRouterProvider, $stateProvider) {
        $urlRouterProvider.otherwise('/');
        $stateProvider
            .state('home', {
                url: '/',
                templateUrl: 'templates/common/home.html',
                controller: 'homeCtrl',
            })
}])
.run(function ($rootScope, $http) {
    $rootScope.api = "http://127.0.0.1:5000/demoShop";
    var call = $rootScope.api + "/frontEnd/loadStructure";
    $rootScope.webshop = $http.get(call).then(function (response) {
        console.log('1');
        return response.data;
    });
    console.log("2");
})
The problem is: check the console.logs in the end....2 executes before 1 because I can't make the $http to wait until go to the next line. How can I do it ?
I need to populate the webshop variable on rootscope before do anything.
 
     
     
     
    