[英]Array.map() to Class gives undefined on this
我正在嘗試使用數組的map函數將我的數據映射到特定的類。 該項目位於Angular。
所以我這樣做:
me.$http({
url: me.appConfig.api + `customer/${customer.number}/stock/warehouses`,
method: 'get'
}).then((r: any) => {
def.resolve(r.data.map(Warehouse));
}).catch(def.reject);
到目前為止非常基本。 然后在我的Warehouse類中,它看起來像這樣:
export class Warehouse {
code: string;
location: string;
weight: number;
count: number;
late: number;
stock?: Stock[];
constructor(data?: any) {
console.debug('test', data);
this.code = 'test';
if (data) {
this.code = data.code;
this.location = data.location;
this.weight = data.weight;
this.count = data.count;
this.late = data.late;
}
}
}
所以只是值的副本,但奇怪的是,它已經在this.code = 'test'
上出現錯誤,然后我得到錯誤:
TypeError: Cannot set property 'code' of undefined
at Warehouse (main.bundle.js:2218:19)
at Array.map (native)
任何線索為什么會發生這種情況?
樣本數據:
[
{
"code": "SQD",
"location": "35,16161;6,31561",
"weight": 3200,
"count": 18,
"late": 18
},
{
"code": "GQZ",
"location": "35,16161;6,31561",
"weight": 321,
"count": 20,
"late": 18
}
]
您似乎將構造函數傳遞給數組映射函數,這可能不是您想要的
def.resolve(r.data.map(Warehouse));
應該是
def.resolve(new Warehouse(r.data));
函數r.data.map(FN)接受一個函數並返回一個數組,該數組來自r.data的每個元素E,並以E作為參數調用該函數,如FN(E)。 請參閱https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.