【发布时间】:2015-10-21 06:46:35
【问题描述】:
我正在使用 angular.js 中的工厂和 $http.get 方法来获取和处理 JSON 数据。 JSON 数据似乎已成功解析为工厂,但我无法访问此 JSON 数据的属性。
这是我的js代码:
var app = angular.module("app", []);
app.factory('mainInfo', function($http) {
var obj = {content:null};
//the php will return json data below
$http.get('http://localhost/test.php').success(function(response){
obj.content = response.records;
});
return obj;
});
app.controller('Ctrl', function($scope, mainInfo){
$scope.foo = mainInfo.content;
}) ;
现在如果我尝试在Ctrl 控制器中访问 foo,网页将不显示任何数据:<div ng-controller="Ctrl">Controller: {{foo}}</div>
但是,如果我在Ctrl 中更改为$scope.foo = mainInfo,则网页将正确显示JSON 数据。
我可以知道在Ctrl 控制器中访问mainInfo.content 属性的正确方法是什么吗?
之所以需要访问 JSON 属性是因为我需要对数据进行预处理。我打算在图表中使用这些数据,如下面的控制器。目前这个控制器也不起作用,因为我在访问 JSON 属性时遇到了与Ctrl 控制器中相同的问题。
app.controller("LineCtrl", function ($scope, mainInfo) {
var timePoints = [];
var percentagePoints = [];
var i = 0;
for( i = 0; i < mainInfo.content.length; i ++) {
timePoints.push(mainInfo.content[i].Time);
percentagePoints.push(mainInfo.content[i].Percentage);
}
$scope.labels = timePoints;
$scope.data = percentagePoints;
$scope.onClick = function (points, evt) {
console.log(points, evt);
};
});
json数据:
{
"records": [
{
"Id": "1",
"Time": "2015-07-25 08:00:00",
"Percentage": "60"
},
{
"Id": "2",
"Time": "2015-07-25 09:00:00",
"Percentage": "70"
},
{
"Id": "3",
"Time": "2015-07-25 10:00:00",
"Percentage": "80"
}
]
}
关于工厂-控制器通信,我只是参考另一个帖子的解决方案:reference
【问题讨论】:
标签: javascript json angularjs