来自工厂的JSON数据未被提取

时间:2016-01-31 19:38:56

标签: javascript angularjs json

这是我的控制者:

 mainApp.controller('recordController', [ '$scope', 'record', 'recordSlides', function($scope, record, recordSlides) {
    $scope.pageClass = 'page page-record';
    record.success(function(data){
        $scope.tracks = data;
    });

    $scope.myInterval = 3000;
    recordSlides.success(function(data){
        $scope.slides = data;
    });
        /*$scope.slides=[
            {
                "image": "http://lorempixel.com/400/200/"
            },
            {
                "image": "http://lorempixel.com/400/200/food"
            }
        ]*/}])

这些是我注入上述控制器的工厂:

mainApp.factory('record',['$http', function($http){ // for delivering records data
    return $http.get('./data/record.json')
        .success(function(data) {
            return data;
        })
        .error(function(err) {
            return err;
        });
}]);

mainApp.factory('recordSlides',['$http', function($http){ // for delivering slides on record page
    return $http.get('./data/recordSlides.json')
        .success(function(data) {
            return data;
        })
        .error(function(err) {
            return err;
        });
}]);

来自工厂的JSON数据"记录"正在被拉动并正确显示但来自" recordSlides"工厂没有显示。当我直接将json数据传递给"幻灯片" (代码注释掉了)但是当我注入控制器并通过工厂传递JSON数据时,它无法工作。

这是recordSlides.json:

[{
    "image": "http://lorempixel.com/400/200/"
  },
  {
    "image": "http://lorempixel.com/400/200/food"
}]

感谢您的帮助。

由于

1 个答案:

答案 0 :(得分:2)

在服务中:

var deferred = new $q.defer();
$http({...})
.success(function (resp) {
    deferred.resolve(resp);
})
.error(function(err){
    deferred.reject(err); 
}
return deferred.promise;

并在控制器中:

record.then(function(data){
    $scope.tracks = data;
});
recordSlides.then(function(data){
    $scope.slides = data;
});

不要忘记在服务中包含$ q依赖