如何在angularjs中观察对象内的对象

时间:2014-12-22 02:10:23

标签: javascript arrays nested

我尝试了不同的方法来访问数组,我还没有能够

这是我的阵列:

Sites [ 
{
    "0": { 
        "catf": 
        { 
            "2": { "cats": { "id": "9" } }, 
            "4": { "cats": { "id": "12" } }, 
            "5": { "cats": { "id": "13" } } 
        } 
    } 
}, 
{ 
    "1": { 
        "catf": 
        { 
            "2": { "cats": { "id": "10" } }, 
            "4": { "cats": { "id": "11" } } 
        } 
    } 
}]

这就是我尝试访问数组的方式

$scope.proposal2.sites[0].catf[2];

这是错误

Cannot read property '2' of undefined

当我打印console.log($scope.proposal2.sites[0])时,我得到了这个

 Object {0: Object, $$hashKey: "00L"} >0: Object >catf: Object >2: Object >cats: Object id: >"10"

我怎么能访问它?

谢谢,

3 个答案:

答案 0 :(得分:1)

$scope.proposal2.sites[0].catf[2];

在上面的代码行中,sites是一个数组对象,因此您可以在这里访问数据,但catfObject,因此您会遇到类似“不能”的问题读取未定义的属性'2'。

答案 1 :(得分:1)

在您的代码中,您使用两个对象声明了数组。要访问其中的第一个,您应该使用$scope.proposal2.sites[0]。那么这个对象只有一个键 - 0

{
    "0": { 
        "catf": 
        { 
            "2": { "cats": { "id": "9" } }, 
            "4": { "cats": { "id": "12" } }, 
            "5": { "cats": { "id": "13" } } 
        } 
    } 
}, 

所以您使用$scope.proposal2.sites[0][0]访问它以获取只有一个键catf的对象:

{ 
   "catf":{ 
       "2": { "cats": { "id": "10" } }, 
       "4": { "cats": { "id": "11" } } 
   }
}

现在您使用$scope.proposal2.sites[0][0].catf[2]来访问您想要的内容。

我同意charlietfl的评论,因为你的结构看起来太复杂了,也许你想要这样的东西:

[ 
  {"catf": { 
    "2": { "cats": { "id": "9" } }, 
    "4": { "cats": { "id": "12" } }, 
    "5": { "cats": { "id": "13" } } 
    }
  },
  {"catf": { 
    "2": { "cats": { "id": "10" } }, 
    "4": { "cats": { "id": "11" } } 
    }
  }
]

并使用$scope.proposal2.sites[0].catf[2]

进行访问

另外我相信甚至可以(而且应该)简化这种结构,但是为了配合它,你应该提供更多关于你的任务的信息。

答案 2 :(得分:0)

我发现问题的答案是:$ scope.proposal2.sites [0] [0] .catf [2]

感谢所有人