0

Создана фабрика, которая вернет данные json и вызовет ее из контроллера, но она будет пустой. не знаю, где я ошибся. нет пульт ошибка и в сеть json также загрузка.Угловой вызов ресурса js для получения данных json в массиве

'use strict'; 
var app = angular.module('angularJson', ['ngResource']); 

    app.factory('loadJsonService', ['$resource', function ($resource) { 
     return { 
      getData: function() { 
       return $resource('json/productDetails.json'); 
      } 
     }; 
    }]) 

    app.controller('angularJsonCtrl',['$scope', 'loadJsonService',function($scope, loadJsonService){ 

    $scope.loadProducts = function(noOfData){ 
     $scope.productDetails = []; 
     $scope.productDetails = loadJsonService.getData().query(); 
    } 

    }]); 
+1

Ваш запрос isync. Нечего возвращать, потому что он еще не закончен. Вам нужно использовать обещания. – Daedalus

+0

Вам нужно взглянуть на [ngResource Doc] (https://docs.angularjs.org/api/ngResource/service/$resource). –

ответ

3

Вы должны поставить ждать, пока запрос будет завершена & там после того, как вам нужно использовать .$promise.then над $resource.query вызова функции. Чтобы вы могли поместить функцию, которая получит вызов от успешного вызова API.

loadJsonService.getData().query().$promise.then(function(res){ //success function 
    $scope.productDetails = res; 
}, function(error){ //error function 
    console.log(error); 
}) 
+0

Какова польза от $. Я всегда делаю .then() напрямую. – sylvain1264

+0

@ sylvain1264, насколько я знаю, 'обещание' возвращает исходное взаимодействие с сервером. Если вы прямо '.then' над ним, он может быть разрешен до того, как данные вернутся с сервера –

+0

Спасибо @PankajParkar –

0

Вы должны в GetData функции набора запроса $ HTTP, как этот

$http.jsonp("json/productDetails.json") 
     .success(function(response) { 
      callback(response); 
     }); 
+0

$ ресурса достаточно, почему предлагается снова вернуться к $ http. –

+0

может использовать $ http вместо $ resourse? –

+0

нет человека .. $ ресурс очень зрелый и эффективный, чем $ http service, $ ресурс хорошо работает с вызовами API –

0

Попробуйте построить в query метод. Если вы хотите написать свой собственный метод получения, выполните следующие действия:

{ 
    method: 'GET', 
    params: { 
    key: value 
}, 
isArray: true, 
cache: true // if you want to cache 
}