Я создал службу, которая считывает json и возвращает данные. Но по какой-то причине он, похоже, не работает и не дает мне ошибку, что делает его очень трудным для отладки. Я надеялся, что кто-то может найти проблему.Проблема, отображающая JSON через услугу с угловым
Прежде всего, у меня есть этот контроллер в файле с именем сборки-controler.js
'use strict';
(function() {
var app = angular.module('priceQuoteApp');
var quoteBuilderController = function ($scope, $http, $timeout, ProductsFactory) {
var products = ProductsFactory.loadProducts();
$scope.listOfProducts = products;
//other stuff going on
};
app.controller('quoteBuilderController', ['$scope', '$http', '$timeout', 'ProductsFactory', quoteBuilderController]);
}());
В loadProducts функция() сидит в моей службы называется сервис-JS и выглядит следующим образом ...
'use strict';
var priceQuoteApp = angular.module('priceQuoteApp');
var loadProductUrl = "scripts/json/sample-products.json";
priceQuoteApp.factory("ProductsFactory", function ($http) {
return {
loadProducts: function() {
//Create an object to hold your result
var result = {};
$http.get(loadProductUrl)
.then(function (allProducts) {
result = allProducts.data.Connectivity;
})
.finally(function() {
});
}
};
});
«Связь» добавляется к данным причина в том, что я только хочу, чтобы выбрать ту часть вложенного JSON
{
"Connectivity": [
{"product_id": 1, "product_name": "bla" },
{"product_id": 2, "product_name": "bla2"}
],
"Other": [
{"product_id": 1, "product_name": "bla" },
{"product_id": 2, "product_name": "bla2"}
]
}
Наконец, на мой взгляд, я пытаюсь отобразить результат в нг-повтора, но он не работает
<table class="table table-hover margin bottom table-striped">
<tr ng-repeat='product in listOfProducts' >
<td><h4>{{product.product_name}}</h4></td>
</tr>
</table>
Может кто-нибудь увидеть, что я делаю неправильно? Действительно ли я правильно заказываю продукты? Спасибо
Спасибо за ваш ответ. Вы можете видеть, что уже есть возврат, который обертывает функцию loadProducts. Это неправильное место? –
Нет необходимости в возвращении туда, так же, как сейчас работает ваш loadProducts, запрос сервера выполнен, но результат этого запроса не возвращается. Так что эффективно его действие с огнем и забытьем, вам действительно нужно вернуть объект результата в эту функцию. – mindparse
Возможно, я не помещаю «результат возврата» в нужное место, но он все еще ничего не возвращает. Я добавил его после $ http.get и в the.then, но он все равно возвращает «результат» как пустой объект. Может быть, я должен реорганизовать loadProducts? –