Я хочу поменять массив и получить 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);
Я удалил из app.js весь блок кода, вызывающий эту ошибку (службу и контроллер), и разместил ее внутри DontLoadThis.js (там есть какая-то разметка, чтобы снова включить в main.html)
Это не обязательно определенный ответ, но есть несколько вещей, которые я заметил, которые кажутся неправильными.
Начиная с вашего 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;
});
};
ng-repeat
. Вы должны использоватьitem in jsons.list
. Видеть меня