Hi, I make some test on the new router and try to make dynamic redirect based on a promise but I am not able to do it.
I have a service file with the following code which return a service with some data coming from a CRUD API // app.services.js (function() { 'use strict'; angular .module('app') .factory('GetSiteID', ['$http', GetSiteID]) .factory('GetTemplate', ['GetSiteID', '$http', '$q', GetTemplate]) .factory('GetPages', ['GetSiteID', '$http', '$q', GetPages]) .factory('GetPagesData', ['GetPages', '$http', '$q', GetPagesData]) .factory('GetHomePage', ['GetPages', '$http', '$q', GetHomePage]) .factory('GetHomePageLayout', ['GetHomePage', '$http', '$q', GetHomePageLayout]) .factory('SharedData', ['GetSiteID', 'GetTemplate', 'GetPages', 'GetPagesData', 'GetHomePage', 'GetHomePageLayout', '$q', SharedData]); var service = {}; ///////////////////// function GetSiteID($http) { return $http.get('config.json') .then (function(response) { service.siteID = response.data._id; //console.log('GetSiteID: ' + service.siteID); return service.siteID }); } function GetTemplate(GetSiteID, $http, $q) { return GetSiteID .then(function(value) { return $http.get('/api/sites/' + value) .then (function(response) { service.template = response.data.template; //console.log('GetTemplate: ' + service.template); return service.template; }) }) } function GetPages(GetSiteID, $http, $q) { return GetSiteID .then(function(value) { return $http.get('/api/sites/' + value) .then (function(response) { service.pages = response.data.pages; //console.log('GetPages: ' + service.pages); return service.pages; }) }) } function GetPagesData(GetPages, $http, $q) { return GetPages .then(function(response) { var pagesDataArray = []; angular.forEach(response, function(value) { // do loop on each page then get data return $http.get('/api/pages/' + value) .then (function(response) { pagesDataArray.push(response.data); service.pagesData = pagesDataArray; //console.log(service.pagesData); return service.pagesData }) }) }) } function GetHomePage(GetPages, $http, $q) { return GetPages .then(function(response) { var pagesArray = []; angular.forEach(response, function(value) { pagesArray.push(value); }) //console.log(pagesArray); for (var i=0; i<pagesArray.length; i++) { return $http.get('/api/pages/' + response[i]) .success (function(response) { if (response.hasOwnProperty("isHomePage") && response.isHomePage === true) { //console.log(response); service.homePage = response._id; service.homePageUrl = response.friendlyUrl; return { homePage : service.homePage, homePageUrl : service.homePageUrl } } }) } }) } function GetHomePageLayout(GetHomePage, $http, $q) { return GetHomePage .then(function() { //console.log('HomePage ID is: ' + service.homePage); //console.log('HomePage URL is: ' + service.homePageUrl); return $http.get('/api/pages/' + service.homePage) .then (function(response) { service.layout = response.data.layout; //console.log('Layout is: ' + service.layout) return service.layout; }) }) } function SharedData(GetSiteID, GetTemplate, GetPages, GetPagesData, GetHomePage, GetHomePageLayout, $q) { return $q.all([GetSiteID, GetTemplate, GetPages, GetPagesData, GetHomePage, GetHomePageLayout]) .then (function(response) { //console.log(service); return service; }); } })(); console.log(service); return an object with all data needed. I use this service by calling SharedData in the router file as follow // app.router.controller.js (function() { 'use strict'; angular .module('app') .controller('RouterController', RouterController); RouterController.$inject = ['SharedData', '$router']; function RouterController(SharedData, $router) { var homePageUrl; SharedData.then(function(service) { console.log(service.homePageUrl); //return home homePageUrl = service.homePageUrl; return homePageUrl; }); $router.config([ { path: '/', redirectTo: '/page/' + homePageUrl }, // SHOULD REDIRECT TO A DYNAMIC HOME PAGE { path: '/', components: { nav: 'nav', page: 'page', header: 'header', title: 'title', main: 'main', bottom: 'bottom', footer: 'footer' } }, { path: '/page/:friendlyUrl', components: { nav: 'nav', page: 'page', header: 'header', title: 'title', main: 'main', bottom: 'bottom', footer: 'footer' }, as : 'page' } ]); } })(); where service.homePageUrl return home but the redirectTo does not works! There is no redirect with undefined. I was expecting a redirect to /page/home Any help would be appreciated to help me understand what going wrong and understand better how promise works Regards Greg -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to angular+unsubscr...@googlegroups.com. To post to this group, send email to angular@googlegroups.com. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.