我第一次尝试AngularJS。我从使用工厂的http-get请求获取JSON数据,但在完成ajax请求之前,该对象将返回为空。
厂:
myDemo.factory('photosFactory',function($http) { var photos = []; var factory = {}; factory.getPhotos = function() { $http({ url: 'content/test_data.json',method: 'GET' }).success(function(data,status,headers,config) { photos = data; return photos; }); }; return factory; });
控制器:
controllers.AppCtrl = function($scope,$location,$http,photosFactory) { $scope.photos = []; init(); function init() { $scope.photos = photosFactory.getPhotos(); } };
这是我想出来的。当控制器设置$ scope.photos时,该值为空,就像它在使用ajax响应填充之前返回照片数组一样。
您应该修改代码以返回承诺,并使用控制器中的值查看虚拟修改代码
myDemo.factory('photosFactory',function($http) { return{ getPhotos : function() { return $http({ url: 'content/test_data.json',method: 'GET' }) } } });
和控制器 –
controllers.AppCtrl = function($scope,photosFactory) { $scope.photos = []; photosFactory.getPhotos().success(function(data){ $scope.photos=data; }); };