我有几个FormPanel。您可以在每个值中输入值。我需要一些东西来添加所有这些值。我可以用循环或函数来做吗?这是我的代码:
view1.js:
Ext.define('myApp.view.fp2', {
extend: 'Ext.form.Panel',
alias: 'widget.fp2',
config: {
id: 'fp2',
styleHtmlContent: true,
items: [
{
xtype: 'fieldset',
styleHtmlContent: true,
title: 'Prueba 3',
items: [
{
xtype: 'selectfield',
docked: 'bottom',
id: 'f3',
margin: 10,
labelWidth: '0%',
autoSelect: false,
options: [
{
text: '0',
value: 0
},
{
text: '1',
value: 1
}
]
}
]
},
{
xtype: 'fieldset',
styleHtmlContent: true,
title: 'Prueba 4',
items: [
{
xtype: 'selectfield',
docked: 'bottom',
id: 'f4',
margin: 10,
labelWidth: '0%',
autoSelect: false,
options: [
{
text: '0',
value: 0
},
{
text: '1',
value: 1
},
{
text: '2',
value: 2
}
]
}
]
},
{
xtype: 'fieldset',
styleHtmlContent: true,
title: 'Prueba 5',
items: [
{
xtype: 'selectfield',
docked: 'bottom',
id: 'f5',
margin: 10,
labelWidth: '0%',
autoSelect: false,
options: [
{
text: '0',
value: 0
},
{
text: '1',
value: 1
},
{
text: '2',
value: 2
},
{
text: '3',
value: 3
}
]
}
]
},
{
xtype: 'fieldset',
html: 'pregunta 6',
styleHtmlContent: true,
title: 'Prueba 6',
items: [
{
xtype: 'selectfield',
docked: 'bottom',
id: 'f6',
margin: 10,
labelWidth: '0%',
autoSelect: false,
options: [
{
text: '0',
value: 0
},
{
text: '1',
value: 1
}
]
}
]
}
{
xtype: 'button',
docked: 'bottom',
itemId: 'button2',
margin: 10,
ui: 'forward',
text: 'siguiente'
//go to view2.js
}
]
}
});
view2.js类似于view1但具有其他值。 总结所有价值观的最佳方法是什么?
提前致谢。
答案 0 :(得分:2)
每次Ext.form.FormPanel
来电
var valueObj = formRef.getForm().getValues();
如果您现在想要将它们合并到一个对象中,您可以执行
Ext.apply(sumValueObj, valueObj ); // will override already existing props
或
Ext.applyIf(sumValueObj, valueObj ); // will not override already existing props
答案 1 :(得分:1)
您可以使用一个函数来汇总您需要的所有值以及您可以触发该函数的所有选择域的更改事件。
在控制器中,你可以听到这样的改变事件:
'fp2 selectfield' : {
change : 'onDataChange'
},
并且可以使用onDataChange
方法:
var values = Ext.getCmp("fp2").getValues();
// code to add/subtract whatever you want
PS 我没有测试过这段代码所以请忽略错误