AngularJS和JSON返回undefined

时间:2016-03-15 15:40:30

标签: angularjs json

您好我在LocalStorage中有一个数据作为JSON字符串:

[
     {"Date":"28/04/2016","Time":"08:00","Title":"Title 1"},
     {"Date":"28/04/2016","Time":"08:30","Title":"Title 2"}
]

我的 module.factory 看起来像是:

module.factory('$schedule', function() {
        var schedule = {};

        var result = JSON.parse(localStorage.getItem('myAgenda'));

        schedule.items = [{
                title: result.Title,
                date: result.Date,
                time: result.Time           
        }];
        return schedule;
    });

当我尝试获取数据时,它返回undefined。当我尝试获取特定对象时:

console.log(result[0].Title);

它工作正常,只显示第一个元素。我想我错过了每个定义,但不知道该怎么做。请帮助我在 schedule.items 中获得所有结果。

我将结果作为项目传递给:

module.controller('ScheduleController', function($scope, $schedule) {    
  $scope.items = $schedule.items; 
});

非常感谢。

3 个答案:

答案 0 :(得分:1)

您应该使用.map覆盖数组,并在数组的最后一个元素中添加缺少的}

var schedule = [];
//assuming result returns an array.
schedule = result.map(function(value){
   return {
        title: value.Title,
        date: value.Date,
        time: value.Time
   };
})

答案 1 :(得分:1)

您正在尝试访问数组中的字段,而不提及您要访问的数组元素。如果要枚举所有议程条目并将它们添加到数组中,它应该如下所示:

module.factory('$schedule', function () {
    var schedule = [];

    var result = JSON.parse(localStorage.getItem('myAgenda'));

    result.forEach(function (date) {
        schedule.push({
            title: date.Title,
            date: date.Date,
            time: date.Time
        })
    })

    return schedule;
});

答案 2 :(得分:0)

不熟悉module.factory,但看起来result是一个对象数组,你在创建schedule.items时就像一个对象一样访问它。

您可能必须迭代数组并在结果中为每个对象创建一个项目。