angularJS $资源响应是数组AND对象

时间:2014-08-05 04:22:13

标签: json angularjs

得到了这个json文件:

[
{
    "name": "paprika",
    "imgSrc": "img/paprika.jpg"
},
{
    "name": "kurkku",
    "imgSrc": "img/kurkku.jpg"
},
{
    "name": "porkkana",
    "imgSrc": "img/porkkana.jpg"
},
{
    "name": "lehtisalaatti",
    "imgSrc": "img/lehtisalaatti.jpg"
},
{
    "name": "parsakaali",
    "imgSrc": "img/parsakaali.jpg"
},
{
    "name": "sipula",
    "imgSrc": "img/sipuli.jpg"
},
{
    "name": "peruna",
    "imgSrc": "img/peruna.jpg"
},
{
    "name": "soijapapu",
    "imgSrc": "img/soijapapu.jpg"
},
{
    "name": "pinaatti",
    "imgSrc": "img/pinaatti.jpg"
}
]

我在工厂成功获取的内容:

factory('getJson', ['$resource', function($resource) {
    return $resource('json/vegs.json', {}, {
      query: {method:'GET', isArray:true}
    });
  }]);

在我的控制器中,我可以获得json的文件内容:

var vegs = getJson.query();
    $scope.vegs = vegs;
    console.log(vegs)
    console.log(typeof vegs)

奇怪的部分是第一个console.log按预期生成一个对象数组。 第二个控制台说它是"对象",而不是数组。

我可以使用{{vegs}}将.json内容添加到我的视图中,我也可以使用ng-repeat,在控制器中我不能使用vegs [0]或vegs.length。它出来了。

我现在已经超过3个小时了解这个问题:)

1 个答案:

答案 0 :(得分:1)

这不是一个“答案”。只是对您问题的一部分进行观察。 (对不起,还不能发表评论......对stackoverflow来说是新手)。

请注意您的评论"第二个控制台说它是"对象",而不是数组。"在数组上使用typeof将始终返回"object"

有各种各样的(并且似乎有争议的)方法来测试它是否是一个数组 - 例如Array.isArray(obj)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray