2015-02-04 4 views
0

Я создал службу, которая считывает 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> 

Может кто-нибудь увидеть, что я делаю неправильно? Действительно ли я правильно заказываю продукты? Спасибо

ответ

1

Я думаю, что это просто случай, когда вам нужно фактически вернуть результат вашего вызова $ http.

Вы назначаете данные объекту результата, но не возвращаете его в вызове loadProducts.

Так просто сделать

return result; 

После создания запроса на $ HTTP

+0

Спасибо за ваш ответ. Вы можете видеть, что уже есть возврат, который обертывает функцию loadProducts. Это неправильное место? –

+0

Нет необходимости в возвращении туда, так же, как сейчас работает ваш loadProducts, запрос сервера выполнен, но результат этого запроса не возвращается. Так что эффективно его действие с огнем и забытьем, вам действительно нужно вернуть объект результата в эту функцию. – mindparse

+0

Возможно, я не помещаю «результат возврата» в нужное место, но он все еще ничего не возвращает. Я добавил его после $ http.get и в the.then, но он все равно возвращает «результат» как пустой объект. Может быть, я должен реорганизовать loadProducts? –

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