Обещание AngularJS выполняется до загрузки данных

В моем приложении я должен получить некоторые данные JSON и назначить их массиву до загрузки страницы. Это мой код для извлечения JSON с помощью сервиса CardService:

cards = [];

var cs = {
...
fetchCards: function() {
      var d = $q.defer();
      $http.get("data/cards.php").success(function(data) {
                      cards = data;
                      d.resolve();
                }).error(function(data, status) {
                      d.reject(status);        
                 });
               return d.promise;
      },
getCards: function() { return cards; };
...
}

В контроллереS блок разрешения, у меня есть следующее:

WalletController.resolve = {
        getCards: function(CardService) {
                CardService.fetchCards().then(loadView, showError);
        }
}

И в реальном контроллере у меня есть следующее:

function WalletController($scope, CardService) {
    $scope.cards = CardService.getCards();
}

Проблема в том, что функция fetchCards в сервисе, кажется, разрешает обещание до того, как данные JSON будут назначены переменной cards. Это приводит к тому, что мой вид загружается с пустыми данными, пока я не обновлюсь пару раз и не получу удачу.

Я могу подтвердить позднюю загрузку, например, когда я регистрирую переменную cards в консоли, я получаю пустой массив в строке 122 (когда загружается мое представление) и полный массив в строке 57 (когда вызов JSON успешен). Линия 57 'с какой-то код выполняетпосле представление загружено.

Как это исправить?

Ответы на вопрос(1)

Ваш ответ на вопрос