我需要一种方法在服务中使用json
检索的数据,控制器使用该服务使用服务返回的值填充模板。
我想要做的就是用所选语言的内容填充模板,这些内容会因用户选择而改变(我现在很远,但这是一步)
控制器
(function(){
angular.module('myApp', [])
.controller('meniuController', ['$http', '$stateParams', '$scope', 'GetDataService', 'PageProperties',
function($http, $stateParams, $scope, GetDataService, PageProperties){
var page = "meniu";
var path = '_global/views/services/json/' + $stateParams.lang + '_data.json';
GetDataService.getData(path).then(function(result){
$scope.props = PageProperties.setProps(page, result.data);
});
}])})();
GetDataService
(function(){
angular.module('myApp').factory('GetDataService',['$http','$q' , function($http, $q) {
return {
getData: function(path) {
return $http.get(path)
.then(function(result) {
return $q.when(result.data);
},
function (httpError) {
throw httpError.status + " : " +
httpError.data;
});
}
}
}]);})();
PageProperties服务
(function(){
angular.module('NimbusApp').service('PageProperties',['$http','GetDataService', function($http, GetDataService) {
this.setProps = function(page, data) {
//here I want to access returned data from getdataService
var properties = {
isCenterActive : isActive_val,
titleClass : page,
title : data.titles[page],
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;
}
}]);})();
我收到以下错误
angular-1.5.8.js:13920 SyntaxError:位置4的JSON中出现意外的标记t at Object.parse(native) at fromJson(http://localhost:8080/_global/lib/js/angular-1.5.8.js:1333:14) 在defaultHttpResponseTransform(http://localhost:8080/_global/lib/js/angular-1.5.8.js:10635:16) 在http://localhost:8080/_global/lib/js/angular-1.5.8.js:10726:12 at forEach(http://localhost:8080/_global/lib/js/angular-1.5.8.js:321:20) 在transformData(http://localhost:8080/_global/lib/js/angular-1.5.8.js:10725:3) 在transformResponse(http://localhost:8080/_global/lib/js/angular-1.5.8.js:11577:21) at processQueue(http://localhost:8080/_global/lib/js/angular-1.5.8.js:16383:28) 在http://localhost:8080/_global/lib/js/angular-1.5.8.js:16399:27 在Scope。$ eval(http://localhost:8080/_global/lib/js/angular-1.5.8.js:17682:28)(anonymous函数)@ angular-1.5.8.js:13920(匿名函数)@ angular-1.5.8.js:10467processQueue @ angular-1.5.8.js:16391(匿名函数)@ angular-1.5.8.js:16399 $ eval @ angular-1.5.8.js:17682 $ digest @ angular-1.5.8.js:17495 $ apply @ angular-1.5.8.js:17790done @ angular- 1.5.8.js:11831completeRequest @ angular-1.5.8.js:12033requestLoaded @ angular-1.5.8.js:11966
抛出异常
angular-1.5.8.js:13920 undefined:undefined
这是正确的方法吗?因为似乎在getDataService
成功结果之前没有值呈现模板