Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS控制器工厂rest JSON_Javascript_Angularjs_Json_Rest - Fatal编程技术网

Javascript AngularJS控制器工厂rest JSON

Javascript AngularJS控制器工厂rest JSON,javascript,angularjs,json,rest,Javascript,Angularjs,Json,Rest,我正在尝试从多个控制器呼叫工厂。此工厂获取JSON数据。当我尝试直接从控制器呼叫时,我可以成功。现在我刚刚添加了一个工厂,控制台中并没有错误,但屏幕上也并没有显示任何内容。代码如下: html模板: <!-- Schools --> <div class="row"> <h3 class="text-center">Schools and Associations</h3> <ul class="gallery gallery

我正在尝试从多个控制器呼叫工厂。此工厂获取JSON数据。当我尝试直接从控制器呼叫时,我可以成功。现在我刚刚添加了一个工厂,控制台中并没有错误,但屏幕上也并没有显示任何内容。代码如下:

html模板:

<!-- Schools -->
<div class="row">
    <h3 class="text-center">Schools and Associations</h3>
    <ul class="gallery gallery1" ng-controller="SchoolsCtrl">
        <li ng-repeat="school in schools" class="card">
            <a ng-href="{{school.url}}" target="_blank">
                <img ng-src="{{school.thumbUrl}}" class="img-responsive">
                <p class="text-center">{{school.name}}</p>
                <p class="text-center">{{school.time}}</p>
            </a>
        </li>
    </ul>
</div>
service.js:

mainApp.factory('GalleryService', function ($http) {
    return {
        getObjects: function (jsonUrl) {
            $http.get(jsonUrl)
                .success(function (data) {
                    return data; 
                })
                .error(function (data, status, error, config) {
                    return [{heading:"Error", description: "Could not load json data"}];
                });
        }
    }
});

为了从工厂函数
getObjects
检索数据,您应该使用
getObjects
函数返回一个承诺。然后将
函数链接到承诺。在控制器内部,您可以使用
进行
getObjects
调用。然后
函数回调以接收响应

工厂

mainApp.factory('GalleryService', function ($http) {
    return {
        getObjects: function (jsonUrl) {
            return $http.get(jsonUrl)
                .then(function (resp) {
                    return resp.data; 
                }, function (res) {
                    return [{heading:"Error", description: "Could not load json data"}];
                });
        }
    }
});
控制器

var mainApp = angular.module('mainApp', ['bootstrapLightbox', 'ngAnimate']);

mainApp.controller('CompaniesCtrl', function($scope, GalleryService) {
  GalleryService.getObjects('app/common/companies.json').then(function(data){
    $scope.companies = data;
  });
});

为了从工厂函数
getObjects
检索数据,您应该使用
getObjects
函数返回一个承诺。然后将
函数链接到承诺。在控制器内部,您可以使用
进行
getObjects
调用。然后
函数回调以接收响应

工厂

mainApp.factory('GalleryService', function ($http) {
    return {
        getObjects: function (jsonUrl) {
            return $http.get(jsonUrl)
                .then(function (resp) {
                    return resp.data; 
                }, function (res) {
                    return [{heading:"Error", description: "Could not load json data"}];
                });
        }
    }
});
控制器

var mainApp = angular.module('mainApp', ['bootstrapLightbox', 'ngAnimate']);

mainApp.controller('CompaniesCtrl', function($scope, GalleryService) {
  GalleryService.getObjects('app/common/companies.json').then(function(data){
    $scope.companies = data;
  });
});

很高兴听到这个消息。谢谢;)很高兴听到这个消息。谢谢;)