javascript - resolve a promise for the MainController -


i'm trying figure out how resolve promise before creating topmost controller. i'm using ui.router know how resolve promises controllers different routes. don't know how resolve before first controller gets loaded.

this extract of index.html:

<html lang="de" x-ng-app="myapp">     <body x-ng-controller="maincontroller">         ...         <div id="header" x-ng-include="'top.html'"></div>         ...         <div id="viewdiv" ui-view></div>         ...     </body> </html> 

i want load current season (and other data ever changes) server , have injected controller top.html header , of view controllers. have service loads current season , returns promise:

services.factory('restaccess', function(restangular) {     return {         loadcurrentseason : loadcurrentseason     };      function loadcurrentseason() {         return restangular.one('season','current').get();     } }); 

and i'd have resolved promise function injected in maincontroller:

controllers.controller('maincontroller', function($scope, currentseason, someservice) {     $scope.season = currentseason;     $scope.stuff = someservice.loadstuff(currentseason); }); 

how can configure this? controller responsible body-element. i'm not using routing here yet.

i'd

resolve: {     currentseason : function(restaccess) {return restaccess.loadcurrentseason();} } 

but don't know put this.

you can have resolve abstract parent state, resolve before individual, concrete child routes' resolves (and can therefore used in resolves).

example:

//in module.config()... ... $stateprovider .state('home', {     url:'/',     template: '<div ui-view></div>',     abstract: true,     resolve: {         'parentresolve':['yourservice', function(yourservice){ /*return promise*/ }]     } }) .state('home.child', {     url:'/child',     template: '<div>after home</div>',     controller: ['parentresolve', function(parentresolve){ /*use parentresolve*/ }],     resolve: {         'childresolve':['parentresolve','yourservice', function(parentresolve, yourservice){ /*parent resolve available, service*/ }]     }         } ... 

additionally, can use module.run() run before tries loading states.


Comments