我有一个服务从文件中获取数据(路径由控制器提供)并返回一个promise - 然后是另一个使用上一个服务返回的数据创建具有属性的对象的服务 .
我的问题是:
- getDataService 在控制器之前运行,因此它没有从中获取数据的路径=>没有任何回报(错误)
Provider'GetDataService'必须从$ get factory方法返回一个值 .
-
我需要保留这个结构,因为我将有更多的控制器具有不同的路径
-
我'm also opened to other solutions but I need to make sure that datas are loaded before the template get populated. I'试图先用getData服务调用SetProperties服务 - 但仍然首先执行getData.js
getdata Service
angular.module('myApp').factory('GetDataService',['$http', function($http) {
var getData = function(path){
return $http.get(path).then(function(result) {
return result.data;
});
};
}]);
setProperties service
angular.module('myApp').service('PageProperties',['$http', function($http) {
this.setProps = function(page, data) {
some code here
var properties = {
isCenterActive : isActive_val,
//header elements
titleClass : page,
title : data.titles[page],
//footer elements
leftLink : leftLink_val,
leftFooterClass: leftLink_val,
leftTitle: data.titles[leftLink_val],
centerLink : centerLink_val,
centerFooterClass: data.titles[centerLink_val],
centerTitle : centerTitle_val,
rightLink : rightLink_val,
rightFooterClass: rightLink_val ,
rightTitle : data.titles[rightLink_val],
}
return properties;
}
}]);
controller
angular.module('myApp', [])
.controller('meniuController', ['$http', '$stateParams', '$scope', 'GetDataService', 'PageProperties',
function($http, $stateParams, $scope, GetDataService, PageProperties){
var page = "meniu";
$scope.language = $stateParams.lang;
var path = '_global/views/services/json/' + $stateParams.lang + '_data.json';
/*PageProperties.setProps(page, path).then(function(data){
//some code here
});*/
GetDataService.getData(path).then(function(data){
$scope.props = PageProperties.setProps(page, data);
}).catch(function(){
$scope.error = 'Unable to get data';
});
}])
提前致谢!!
1 回答
该错误表明您的
GetDataService
提供程序(定义为工厂)不返回任何内容然后你可以让
PageProperties
使用GetDataService