Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 解析AngularJS中嵌套对象的最佳方法?_Json_Angularjs_Object_Nested - Fatal编程技术网

Json 解析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)+'/

我试图使用angularjs解析从远程服务器返回的嵌套数据结构。我真的被这种模式难住了,因为我试图用以下函数访问“事件”数据

$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函数中吗?当然,我编辑了上一篇文章,向您展示了如何做