2014-10-06 160 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

項目目標應該是這樣 { .... 「相關信息」:< 「一些價值」> .... }

它應該已經有鍵。