2015-07-11 2 views
0

Я перешел от использования ngRoute к ui-router. Я пытаюсь разрешить фабричный вызов в маршруте для использования в контроллере, но он не определен при выводе на консоль. Вот Фабрика:Угловое решение ui-router не определено

'use strict'; 

angular.module('angular10App') 

.factory('AirportService', function ($http) { 

return { 

    getAirports: function() { 

     var airports = $http.get('../json/airports.json') 
      .then(function (response) { 

       console.log(response.data); //Outputs an array of objects 

       return response.data; 
      }); 
    } 
}); 

Вот Маршрут:

'use strict'; 

angular.module('angular10App') 
    .config(function ($stateProvider) { 
    $stateProvider 
     .state('selectFlights', { 
      url: '/select_flights', 
      templateUrl: 'app/selectFlights/selectFlights.html', 
      controller: 'SelectFlightsCtrl', 
      resolve: { 

       AirportService: 'AirportService', 

       airports: function (AirportService) { 
        return AirportService.getAirports(); 
       } 
      }, 
     }); 
    }); 

и вот контроллер:

'use strict'; 
angular.module('angular10App') 
.controller('SelectFlightsCtrl', function ($scope, airports) { 

$scope.selectedAirport = null; 

    $scope.airports = airports; 
    console.log($scope.airports); //undefined 
}); 

ответ

3

Попробуйте изменить решимость блока к этому:

resolve: { 
    airports: function (AirportService) { 
     return AirportService.getAirports(); 
    } 
} 

И изменить getAirPorts функция:

function getAirports() { 
    // You need to return the $http promise (or in your case, 'var airports'); 
    return $http.get('../json/airports.json') 
    .then(function (response) { 
     console.log(response.data); //Outputs an array of objects 
     return response.data; 
    });   
} 
+0

Еще не определено! – AngularBoy

+0

К сожалению, я не обращал много внимания на функцию getAirports, поскольку блок Resolve выглядел довольно странно. Похоже на то, что вы возвращаете функцию, которая создает переменную, но фактически не возвращает обещание $ http. Хотя я мог ошибаться. –

+1

Вот и все. Это был возврат $ http.get, это было неправильно. Благодарю. – AngularBoy

Смежные вопросы