我正在努力编写一个有角度的应用程序。将空数组推入对象时遇到问题。
我收到错误:
TypeError:无法读取未定义
的属性'push'
我有一个名为items的对象,如下所示:
Object
{
"Name": "name",
"Description": "description"
}
我想将一个空数组推入可以包含另一个数组的对象中。这样的事情。
Object
{
"Name": "name",
"Description": "description",
"Related Items": {
Item1:{...},
Item2:{...},
...
}
}
我的控制器在调用时执行此操作:
$scope.push = function () {
$scope.item.push({"Related Items":[]});
};
我知道我必须对JSON对象和数组的简单方法感到困惑,但我似乎无法找到解决方案。
三江源!
答案 0 :(得分: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 = {};
答案 1 :(得分:1)
Javascript' push
功能仅在您将值推送到数组时才有效。如果你试图推送到一个对象,它将无法工作,而是会尝试调用" push"哪个不存在。这就是您收到错误的原因。
确保$scope.item
是一个数组([]
或new Array
),然后使用您想要的值推送到它。
$scope.item = [];
$scope.push = function () {
$scope.item.push({"Related Items":[]});
};
Here's W3School的.push()方法解释。
答案 2 :(得分:1)
项目对象应该是这样的 { .... "相关项目":<&#;;某些价值"> .... }
它应该已经有了密钥。