Javascript функция не вызывается? Сфера вопроса? - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь выполнить проверку объекта json. Но, похоже, метод ispoQuantityInvalid метод не вызывается вообще.

Fiddle

selectedRows = [{
    "itemNumber": "",
    "lineNumber": 1,
    "description": "PUMP,COMPLETE, P/N E12LYTFS-137",
    "uom": "",
    "poQuantity": "1",
    "recievedQuantity": "3",
    "isMatched": false,
    "p2PLineItemId": "168512",
    "quantityUnitPrice": "1",
    "buyerItemNumber": null
}];    


 ispoQuantityInvalid = () => (element, index, array) => {
 alert() //not getting called. 
    return this.isEmpty(element.poQuantity);
  }
console.log(this.selectedRows)

if (this.selectedRows.some(this.ispoQuantityInvalid)) {
     console.log('po qty is null or empty') //always gets called.
      return;
    }    

  isEmpty = (value) => {     
    return (value == null || value.length === 0 || value === '' || value == 0);
  }
  1. Даже если poQuantity не равно нулю, не пусто или равно 0, проверка не проходит.
  2. Кажется, ispoQuantityInvalid метод вообще не вызывается. Я не вижу тревоги.

Что мне здесь не хватает? Кажется, это проблема сферы. Но я использую функцию стрелки, которая, как предполагается, не вызывает эту проблему, верно?

1 Ответ

1 голос
/ 19 января 2020

изменить

 ispoQuantityInvalid = () => (element, index, array) => {
 alert() //not getting called. 
    return this.isEmpty(element.poQuantity);
  }

на

 ispoQuantityInvalid = (element, index, arra) => {
 alert() //not getting called. 
    return this.isEmpty(element.poQuantity);
  }

Первая функция - это функция, которая возвращает функцию, которую вы хотите вызвать. Поэтому внутренняя функция доступна только, но никогда не вызывается. Тогда оператор if выглядит как if( function(e,i,a) {} ), что не является ложью, поэтому тело оператора if выполняется.

...