【发布时间】:2018-05-03 11:25:22
【问题描述】:
我有一种情况,我定义了三个模型类,如下所示
export class Parent
{
name: string;
containers: Container[];
}
export class Container
{
desc: string;
sets: Sets[];
}
export class Sets
{
private _data?: any[];
private _dataSet?: any[];
get data()
{
if (this.dataSet && this.dataSet.length > 0)
{
return this._dataSet[0].data;
}
return this._data;
}
set data(data: any[])
{
this._data = data;
}
get dataSet()
{
return this._dataSet;
}
set dataSet(dataSet: any[])
{
this._dataSet = dataSet;
}
}
问题是:Set 类的getter 和setter 方法不会被触发,除非我明确执行new Set()(我不知道new Set() 是否真的有必要)。
例如:
"name": "vik",
"containers": [
{
"desc": "something",
"sets": [
{
"dataSet": [
{
"data":[
{
// Object
}]
}]
}]
}]
当我这样做时:
let response:Parent = responseObj;
console.log(response.containers[0].sets[0].data)
它应该返回数据集value,但它却返回undefined。
但如果我这样做:
let response:Parent = responseObj;
console.log(new Sets(response.containers[0].sets[0]).data)
返回正确的值。
我是否遗漏了什么或如何改进我的代码以使其正常工作?
【问题讨论】:
-
对于多重嵌套,您可以做的不多。见this answer。
-
你的对象是不是来自外部,比如http响应?
-
是的,这是一个http响应
-
那我给你一个答案,但你不会喜欢它(
-
让响应:Parent = JSON.parse(responseOb)j; console.log(response.containers[0].sets[0].data) 试过了吗?
标签: angular angular-directive angular-services