2014-10-06 123 views
0

我正在尽我所能编写一个角度应用程序。将空数组推入对象时遇到问题。将数组推入JSON对象,Javascript

我得到一个错误:

TypeError: Cannot read property 'push' of undefined

我有一个名为项的对象,看起来像这样:

Object 

{ 
    "Name": "name", 
    "Description": "description" 
} 

我愿推动空数组可以包含另一个数组对象。像这样的东西。

Object 

{ 
    "Name": "name", 
    "Description": "description", 
    "Related Items": { 
        Item1:{...}, 
        Item2:{...}, 
        ... 
        } 
} 

我控制器做到这一点时,它被称为:

$scope.push = function() { 
    $scope.item.push({"Related Items":[]}); 
}; 

我知道我一定是简单的东西有关JSON对象和数组混合起来,但我似乎无法找到一个解。

谢谢!

回答

2

由于item是一个对象,你可以设置Related Items属性:

$scope.item["Related Items"] = []; 
$scope.item["Related Items"].push({}); 

然而,上面看起来Related Items实际上是与主要的名称Item1等,而不是一个数组的对象。

$scope.item["Related Items"] = {}; 
$scope.item["Related Items"].Item1 = {}; 
0

Javascript的push函数只适用于将值推入数组。如果你尝试推送一个对象,它将不会工作,而是会尝试调用不存在的“推送”键。这就是为什么你会收到你遇到的错误。

确保$scope.item是一个数组([]new Array),然后用您想要的值推送它。

$scope.item = []; 
$scope.push = function() { 
    $scope.item.push({"Related Items":[]}); 
}; 

Here's W3School的.push()方法的解释。

0

项目目标应该是这样 { .... “相关信息”:< “一些价值”> .... }

它应该已经有键。