我对Ionic和Typescript还是很陌生,并且收到了一个应用程序的缺陷,其中出现了订单外壳,但是数据全为空白。 我的代码:
// Loop over MONITORS
this.monitorArrayLength = this.detail.orderDetailList[i].monitors.length;
for (let j = 0; j < this.monitorArrayLength; j++) {
this.monitorArray[j] = this.detail.orderDetailList[i].monitors[j];
if (
this.monitorArray[j].serialNum !== null ||
this.monitorArray[j].serialNum !== "" ||
this.monitorArray[j].status !== null ||
this.monitorArray[j].status !== "" ||
this.monitorArray[j].brandModel !== null ||
this.monitorArray[j].brandModel !== "" ||
this.monitorArray[j].docId !== null ||
this.monitorArray[j].docId !== ""
) {
this.showMonitorArray[j] = true; // Show monitor
if (this.monitorArray[j].docId !== null) {
this.pdfIconArray[j] = true; // Show pdf icon
} else {
this.pdfIconArray[j] = false; // Show normal icon
}
} else {
this.showMonitorArray[j] = false; // Don't show monitor
}
}
因此,如果从数据库返回的结果为null或“”,则基本上什么也不会出现。
这是我从数据库中得到的结果:
monitors: [{ serialNum: "", status: "", brandModel: "", docId: null }]
我上面的代码没有正确检查“”,并且当不应该显示数据的外壳时仍在显示。
这是检查“”的正确语法吗?
任何帮助将不胜感激!
答案 0 :(得分:2)
这与Ionic或TypeScript无关。您应该将您的if
条件更改为
serialNum被定义,状态被定义,brandModel被定义,docId被定义
其中“已定义”表示不是null
或""
。
if (
(this.monitorArray[j].serialNum !== null &&
this.monitorArray[j].serialNum !== "") &&
(this.monitorArray[j].status !== null &&
this.monitorArray[j].status !== "") &&
(this.monitorArray[j].brandModel !== null &&
this.monitorArray[j].brandModel !== "") &&
(this.monitorArray[j].docId !== null && this.monitorArray[j].docId !== "")
) {
//...
}
但是看起来真的很乱。您可以将其缩短为功能
function isDefined(monitor) {
const { serialNum, status, brandModel, docId } = monitor;
return serialNum && status && brandModel && docId;
}
确保所有这些值都不是falsy。