2017-01-27 4 views
0

В моем угловом пути образца, я пытаюсь сделать:Resolve в угловых маршрутизаторе UI

(function(angular){ 
    'use strict'; 

    angular 
     .module('appRouter',['ui.router']) 
     .controller('routerCtrl',function(myResolveServ,resolveData){ 
      console.log(resolveData); 

     }) 
     .service('myResolveServ',function($http){ 
      this.getResolveData = function($http){ 
       var root = 'https://jsonplaceholder.typicode.com'; 
       return $http.get(root+'/posts/1').then(function(response){ 

        return response.data; 
       }); 
      } 
     }) 
     .config(function($stateProvider,$urlRouterProvider){ 
      $stateProvider 
       .state('settings.profile',{ 
        url:'/profile', 
        templateUrl:'templates/profile.html' 
       }) 
       .state('settings.account',{ 
        url:'/account', 
        templateUrl:'templates/account.html', 
        controller:'routerCtrl', 
        controllerAs:'vm', 
        resolve:{ 
         resolveData :function(myResolveServ){ 
          var data = myResolveServ.getResolveData(); 
         } 
        } 
       }); 

      $urlRouterProvider.otherwise('/settings/profile'); 


     }); 

})(window.angular); 

Но этот код не работает. Я не могу перейти на страницу с учетными записями /settings/account.

Ошибка не очевидна в консоли.

Что я делаю неправильно?

UPDATE

Я знаю, что это работает:

   resolve:{ 
        resolveData : function($http){ 
         var root = 'https://jsonplaceholder.typicode.com'; 
         return $http.get(root+'/posts/1').then(function(response){ 

          return response.data; 
         }); 
        } 
       } 
+0

Вы говорите, что «идти к URL/настройки/счета» - где это точно? settings.account - это состояние, у которого есть URL-адрес/учетная запись, и какой из них/settings/account? – rrd

ответ

0

Вы должны возвратить данные в вашей решимости для маршрута settings.account

resolveData: function(myResolveServ) { 
    return myResolveServ.getResolveData(); 
} 
+0

Я пробовал, но это не вход в консоль, что происходит в контроллере. – StrugglingCoder

+0

Попробуйте обновленный код – Dario

+0

Не работает. Служит ли обслуживание нормально? Должен ли контроллер регистрировать данные? – StrugglingCoder

0

Трудно сказать, почему, вы должны смотреть ui ошибки маршрутизатора. Вставить код и искать ошибку

var $rootScope = angular.element(document.querySelectorAll("#home")[0]).injector().get('$rootScope'); 

$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){ 
    console.log('$stateChangeStart to '+toState.to+'- fired when the transition begins. toState,toParams : \n',toState, toParams); 
}); 

$rootScope.$on('$stateChangeError',function(event, toState, toParams, fromState, fromParams){ 
    console.log('$stateChangeError - fired when an error occurs during transition.'); 
    console.log(arguments); 
}); 

$rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){ 
    console.log('$stateChangeSuccess to '+toState.name+'- fired once the state transition is complete.'); 
}); 

$rootScope.$on('$viewContentLoaded',function(event){ 
    console.log('$viewContentLoaded - fired after dom rendered',event); 
}); 

$rootScope.$on('$stateNotFound',function(event, unfoundState, fromState, fromParams){ 
console.log('$stateNotFound '+unfoundState.to+' - fired when a state cannot be found by its name.'); 
    console.log(unfoundState, fromState, fromParams); 
});` 
Смежные вопросы