如何从 ES6 转换为 ES5(箭头函数)
How to convert from ES6 to ES5(arrow function)
我正在尝试将 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
一个可能的解决方案是使用 Array.filter() 的 thisArg
。
thisArg: Optional - Value to use as this
when executing callback.
特别是,关于您要转换的箭头函数,您可以从 success
回调中传递 this
上下文,以便在 filter() 内部使用 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);
}
我正在尝试将 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
一个可能的解决方案是使用 Array.filter() 的 thisArg
。
thisArg: Optional - Value to use as
this
when executing callback.
特别是,关于您要转换的箭头函数,您可以从 success
回调中传递 this
上下文,以便在 filter() 内部使用 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);
}