我正在使用ExtJS框架,并使用不同的参数多次运行一个方法。
我正在寻找一种使它变得更加组成,简单和可维护的方法,我想只有香草Javascript解决方案可以解决这个问题?
我尝试将每个参数收集到数组中,并使用Array.map()
和forEach()
方法,但是我无法处理。
感谢前进。
//ExtJS class:
Ext.define('MyApp.FooClass', {
extend: 'Ext.panel.Panel',
items: [
MyApp.createFooCard('Func1Param1', 'Func1Param2', 'Func1Param3'),
MyApp.createFooCard('Func2Param1', 'Func2Param2', 'Func2Param3'),
MyApp.createFooCard('Func3Param1', 'Func3Param2', 'Func3Param3'),
]
});
您会注意到,我总共对每个方法使用相同的方法,但使用不同的参数。
//And here is related factory-function:
createFooCard: (bindValue, userCls, glyph, label) => {
return {
itemId: bindValue,
userCls: userCls,
glyph: MyApp.getGlyph(glyph),
items: {
xtype: 'infocardfld',
fieldLabel: label,
bind: '{' + bindValue + ' || "0"}'
}
}
}
答案 0 :(得分:3)
它与Array.prototype.map
一起使用以收集嵌套数组,并与Spread syntax
中继这些数组以在工厂功能上运行。应该是:
Ext.define('MyApp.FooClass', {
extend: 'Ext.panel.Panel',
items: [
['Func1Param1', 'Func1Param2', 'Func1Param3'],
['Func2Param1', 'Func2Param2', 'Func2Param3'],
['Func3Param1', 'Func3Param2', 'Func3Param3']
].map(args => MyApp.createFooCard(...args));
});
答案 1 :(得分:0)
如果此Items
数组在全局范围内,则可以在createFooCard
函数内部轻松地向其中添加元素。例如:
//您的元素集合数组
var items = []
//您的功能
function createFooCard(bindValue, userCls, glyph, label) {
var temp = {
itemId: bindValue,
userCls: userCls,
glyph: MyApp.getGlyph(glyph),
items: {
xtype: 'infocardfld',
fieldLabel: label,
bind: '{' + bindValue + ' || "0"}'
}
};
items.push(temp);
}
您也可以轻松地将数组作为参数传递。如果您想使其更通用。