在我的angularjs应用程序中,我只想加载一次庞大的数据列表,并在控制器之间共享。 所以我有一个通过http检索数据的工厂:
angular.module('app').factory('reportFactory', ['$http', function ($http) {
var reportFactory = {};
reportFactory.endPoint = 'ajax.php';
reportFactory.getHugeData = function () {
return $http.get(this.endPoint + '?query=CourseListQuery');
};
return reportFactory;
}]);
我试过这个:
angular.module('app').factory('CommonData', ['reportFactory', function CommonDataFactory(reportFactory) {
var data = {};
reportFactory.getHugeData().then(function (response) {
data.courses = response.data;
}, function (error) {
});
return data;
}]);
但是当我在控制器中尝试访问log.warn(CommonData.courses);
时,我得到了undefined
我想存储该承诺的结果,以使其可用于我的所有angularjs应用程序。
如何构建它以及在哪里进行将检索数据的唯一调用?
使用提供程序。
angular.provider("CommonData", [function() {
this.commonData = {};
this.setCommonData = function(commonData) {
this.commonData = commonData;
};
this.getCommonData = function() {
return this.commonData;
};
}]);
然后在控制器中:
angular.controller("ExampleController", ['CommonDataProvider', function(CommonDataProvider) {
var commonData = CommonDataProvider.getCommonData();
}]);