Как конфертировать из ES6 в ES5 (функция стрелки) - PullRequest
1 голос
/ 21 мая 2019

Я пытаюсь преобразовать функцию стрелки ES6 в ES5

Я уже пытаюсь изменить ее, но она теряет свою сферу применения, потому что я использую this.getView ()

this.getModel().read('/CharacteristicSet', {
  filters: this._afilters,
  success: function (oData) {
    oViewModel.setProperty('/charSet', oData.results);

    for (let i = 0; i < oData.results.length; i++) {
      if (oData.results[i].GroupId === sKey) {
        oBinding.filter(this._mFilters[sKey]);
      }
    }

    let aIconTabItems = this.byId('iconTabBar').getItems();
    let aCharacteristics = oData.results;

    for (var j = 0; j < aIconTabItems.length; j++) {
      let count = aCharacteristics.filter(
        obj =>
          obj.GroupId === aIconTabItems[j].getKey() &&
          obj.EquipmentNumber ===
            this.getView()
              .getBindingContext()
              .getProperty('EquipmentNumber'),
      ).length;

      oViewModel.setProperty(`/${aIconTabItems[j].getKey()}`, count);
    }
  }.bind(this),
});

Я ожидаю, что это будет ES5

1 Ответ

1 голос
/ 21 мая 2019

Одним из возможных решений является использование thisArg из Array.filter () .

thisArg : Необязательно - значение для использования в качестве this при выполнении обратного вызова.

В частности, говоря о функции стрелки, которую вы пытаетесь преобразовать, вы можете передать контекст this из обратного вызова success для использования внутри фильтра () as this:

var count = aCharacteristics.filter(function(obj)
{
    var equipmentNum = this.getView().getBindingContext().getProperty("EquipmentNumber");
    return obj.GroupId === aIconTabItems[j].getKey() && obj.EquipmentNumber === equipmentNum;
}, this /* Here we use the thisArg of filter */).length;

Другой способ - просто определить переменную вне loop, как вы делаете это с переменной aIconTabItems:

let aIconTabItems = this.byId('iconTabBar').getItems();
let aCharacteristics = oData.results;
let equipmentNum = this.getView().getBindingContext().getProperty('EquipmentNumber');

for (var j = 0; j < aIconTabItems.length; j++)
{
    let count = aCharacteristics.filter(function(obj)
    {
        return obj.GroupId === aIconTabItems[j].getKey() &&
               obj.EquipmentNumber === equipmentNum;
    }).length;

    oViewModel.setProperty(`/${aIconTabItems[j].getKey()}`, count);
}
...