Json 解析AngularJS中嵌套对象的最佳方法?
我试图使用angularjs解析从远程服务器返回的嵌套数据结构。我真的被这种模式难住了,因为我试图用以下函数访问“事件”数据Json 解析AngularJS中嵌套对象的最佳方法?,json,angularjs,object,nested,Json,Angularjs,Object,Nested,我试图使用angularjs解析从远程服务器返回的嵌套数据结构。我真的被这种模式难住了,因为我试图用以下函数访问“事件”数据 $scope.generate_event = function(){ from_date = $scope.dts.from to_date = $scope.dts.to from = from_date.getFullYear()+'/'+(from_date.getMonth()+1)+'/
$scope.generate_event = function(){
from_date = $scope.dts.from
to_date = $scope.dts.to
from = from_date.getFullYear()+'/'+(from_date.getMonth()+1)+'/'+from_date.getDate()
to = to_date.getFullYear()+'/'+(to_date.getMonth()+1)+'/'+to_date.getDate()
$http.get(server+'rawdata?vids='+$scope.selected_vehicle.id+'&evfields=lat,lon,f_event_time,speed&from='+from+'&to='+to)
.success(function(data){
$scope.report_data = data
$localStorage.report_data = data
$scope.generate()
})
}
任何关于最佳方法的建议或提示都会很好,我需要为工作而运行,现在已经一个月了。谢谢
{
"rawData": {
"keys": {
"lat": ["number", "lat"],
"lon": ["number", "lon"],
"speed": ["number", "Speed [mph]"],
"code": ["number", "EVC"],
"vid": ["number", "Vehicle ID"]
},
"keys_order": ["lat", "lon", "speed", "code", "vid"],
"events": [{
"f_lon": -8.3315599999999996,
"code": 4,
"vid": 5,
"lon": -833156,
"f_lat": 51.90831,
"lat": 5190831,
"speed": 78.0
}, {
"f_lon": -8.3741599999999998,
"code": 4,
"vid": 5,
"lon": -837416,
"f_lat": 51.903979999999997,
"lat": 5190398,
"speed": 78.0
}]
}
}
更新:我没有正确解释这个问题。这是生成函数
$scope.generate = function(){
$scope.event_config = {
title: 'Events', // chart title, legend etc
/*etc
*etc
*/
data = {}
data.series = [' Events']
data.data = []
this fucker ----->$scope.report_data.events.forEach(function(value, index, array){
o = {}
o.x = value.f_event_time
o.y = [value.lat+'/'+value.lon]
o.tooltip = value.speed
data.data.push(o)
})
$scope.event_data = data
我收到错误“forEach undefined”。本应生成d3图表,但“报告数据”最初用于存储来自不同功能的距离数据,以便本地存储。那么我是否需要第二个用于本地存储的变量?ie$scope.report\u event=$localStorage.report\u event?如果我发的话,有人能看一下源代码吗
$http.get(server+'rawdata?vids='+$scope.selected_vehicle.id+'&evfields=lat,lon,f_event_time,speed&from='+from+'&to='+to)
.success(function(data){
if (data) {
var events = data.rawData.events; // get the events json array
$scope.generate(events);
}
})
在您的控制器中有声明性函数,如
$scope.generate = function(events) {
// your code
}
用以下方法解决了它
$scope.generate_report = function(){
from_date = $scope.dts.from
to_date = $scope.dts.to
from = from_date.getFullYear()+'/'+(from_date.getMonth()+1)+'/'+from_date.getDate()
to = to_date.getFullYear()+'/'+(to_date.getMonth()+1)+'/'+to_date.getDate()
$http.get(server+'vehicle/'+$scope.selected_vehicle.id+'/counters/deltas/day?from='+from+'&to='+to)
.success(function(data){
$scope.report_data = data
$localStorage.report_data = data
$scope.process()
})
$http.get(server+'rawdata?vids='+$scope.selected_vehicle.id+'&genevcodes=39,40&evfields=lat,lon,f_event_time,mph,speed,code&from='+from+'&to='+to)
.success(function(data){
if(data){
var events = data.rawData.events
}
$scope.report_event = events
$localStorage.report_event = events
$scope.generate()
})
}
只需声明另一个localstorage变量来存储来自JSON对象的事件,感谢Yannik时间提出了一个愚蠢的问题。。。。。。我可以将events变量传递到我的$scope.generate函数中吗?当然,我编辑了上一篇文章,向您展示了如何做