Ionic - Проверка "" в машинописи - PullRequest
0 голосов
/ 04 ноября 2019

Я довольно новичок в 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
  }
}

Таким образом, в принципе ничего не должно появляться, если результаты, возвращаемые из базы данных, равны нулю или "".

Вот результаты, которые я получаю из базы данных:

monitors: [{ serialNum: "", status: "", brandModel: "", docId: null }]

Приведенный выше код неправильно проверяет "", и оболочка данных все еще отображается, когда это не должно быть.

Это правильный синтаксис дляпроверьте ""?

Любая помощь будет оценена!

1 Ответ

2 голосов
/ 04 ноября 2019

Это не имеет ничего общего с 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;
}

, которая гарантирует, что все эти значения не ложь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...