$ http.get вызывает бесконечные звонки (и ошибки), пока компьютер не падает

0

Я хочу поменять массив и получить json файл, но не знаю, почему и где что-то не так в моем коде (часть службы/контроллера без HTTP-запроса работает).

инкриминируемый код

(function() {
  (function() {
    var JsonsService;
    JsonsService = function($http) {
      var pizze;
      pizze = [];
      return {
        getPizze: function() {
          $http.get('data/pizze-it.json').then(function(pizze) {
            pizze = pizze.data;
          });
        }
      };
    };
    JsonsService.$inject = ['$http'];
    angular.module('myApp').factory('JsonsService', JsonsService);
  })();

}).call(this);

(function() {
  (function() {
    var JsonsCtrl;
    JsonsCtrl = function(JsonsService) {
      var self;
      self = this;
      self.list = function() {
        return JsonsService.getPizze();
      };
    };
    JsonsCtrl.$inject = ['JsonsService'];
    angular.module('myApp').controller('JsonsCtrl', JsonsCtrl);
  })();

}).call(this);

Plnkr

Я удалил из app.js весь блок кода, вызывающий эту ошибку (службу и контроллер), и разместил ее внутри DontLoadThis.js (там есть какая-то разметка, чтобы снова включить в main.html)

Теги:

1 ответ

1
Лучший ответ

Это не обязательно определенный ответ, но есть несколько вещей, которые я заметил, которые кажутся неправильными.

Начиная с вашего JsonsService:

JsonsService = function($http) {
    var pizze;
    pizze = [];
    return {
        getPizze: function() {
            $http.get('data/pizze-it.json').then(function(pizze) {
                pizze = pizze.data;
            });
        }
    };
};

Вы инициализируете переменную pizze но также используете переменную pizze callback в $http.get(). Вместо этого я предлагаю:

var pizze = [];

...

$http.get('data/pizze-it.json').then(function(json_response) {
    pizze = json_response.data;
});

Это, однако, является излишним по второму вопросу: JsonsService.getPizze() фактически ничего не возвращает. Возможным способом этого было бы вернуть обещание от getPizze() и getPizze() результат в контроллере.

// in service
return {
    getPizze: function() {
        return $http.get('data/pizze-it.json');
    }
};

// in controller
JsonsCtrl = function(JsonsService) {
    var self;
    self = this;
    self.list = [];

    JsonsService.getPizze().then(function (json_response) {
        self.list = json_response.data;
    });
};
  • 0
    Обновил plnkr , бесконечный цикл ошибок исчез, но я все еще не получаю данные
  • 0
    Вопрос сейчас в ng-repeat . Вы должны использовать item in jsons.list . Видеть меня
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню