我遇到了函数返回的问题无法读取属性' push'未定义的。
以下是代码:
items: [
{
xtype: 'button',
text: 'test, to be updated',
height: 30,
flex: 0,
listeners: {
tap: 'onClick'
}
},
]
重新调整错误的功能:
export class AppComponent {
public data: any;
constructor() {
this.data = [
{
id: 1,
'title': 'Title 1',
item: {
id: 1,
title: 'Item Title 1',
config: {
row: 1,
col: 1,
sizex: 1
}
}
}
];
}
}
我该如何解决这个问题?
答案 0 :(得分:1)
您的代码存在一些问题。首先,您试图进入数组的第一个元素,因为 this.data 是一个数组,但您使用的是data.item。你必须使用data [0] .item(或者你想要推送的任何索引),否则你将不得不推入一个带有id,title,item等的全新对象(但我不会# 39;不要以为你要做的是什么。其次, item 本身不是数组,因此您无法进入item属性。你必须使它成为一个数组,以推进它。您的最终产品可能如下所示:
export class AppComponent {
public data: Array<any>;
constructor() {
this.data = [
{
id: 1,
'title': 'Title 1',
items: [{
id: 1,
title: 'Item Title 1',
config: {
row: 1,
col: 1,
sizex: 1
}
}]
}
];
}
add() {
this.data[0].items.push({ id: 2, title: 'pushed', config: { sizex: 1 } });
}
}
答案 1 :(得分:0)
将this.data.item变成一个数组然后你应该能够推送任何你想要的东西:
this.data = [
{
id: 1,
'title': 'Title 1',
item: [{
id: 1,
title: 'Item Title 1',
config: {
row: 1,
col: 1,
sizex: 1
}
}]
}
];
在添加功能中,您需要:
add() {
this.data[0].item.push({ title: 'pushed', config: { sizex: 1} });
}
答案 2 :(得分:-2)
尝试将您的数据声明为
public data : Array<any> = [];
以便您可以使用push
。
由于item是一个对象,因此make为数组类型。
var x = { .....
item:[],
.....
}
x.item.push(something);