njnesterov
@njnesterov
CEO EventSide LLC

Resolve после .success?

Доброе время суток.
Подскажите пожалуйста, как загрузить контроллер только после того как придет ответ с сервера.

Наш App.js
...
$routeProvider.when('/', {
			templateUrl: 'views/home.html',
			controller: 'HomePageCtrl',
         resolve: // что необходимо вставить?
...


Наш контроллер
angular.module('someApp').controller('HomePageCtrl', ['$scope', '$http', function($scope, $http){
	$http.get("/data").success(function(data){
                       $scope.data = data;
        });
}]);
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
Резолв должен получить объект Promise.
Например:
resolve: {
    data: ['loader', function(loader) {
        // метод, выполняющий запрос к серверу
        return loader.load();
    }],
}

UPD:
...
$routeProvider.when('/', {
      templateUrl: 'views/home.html',
      controller: 'HomePageCtrl',
         resolve: 
         	{
         		loadedContent: ['$http', function($http) {
         			return $http.get('/data');
         		}],
         	}
...

Теперь в контроллер просто инжектим loadedContent, ангуляр передаст туда то, что вернет нам Promise.
angular.module('someApp').controller('HomePageCtrl', ['$scope', 'loadedContent', function($scope, loadedContent){
	$scope.data = loadedContent;
}]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы