Extjs - 当trackResetOnLoad为true时,reset()不加载最后一个值

时间:2016-07-07 15:56:27

标签: javascript extjs extjs4

Extjs文档trackResetOnLoad

  

如果设置为true,则reset()将重置为上次加载或setValues()数据   而不是首次创建表单时。默认为:false

在我的表单中,我设置了trackResetOnLoad true和In Afterrender函数,我使用setValue()更新了值并调用了Reset函数。 trackResetOnLoad未重置为最后一个值(setvalue())。

我错误地使用trackResetOnLoad配置选项吗?如果可能请解释如何重置,setValue和trackResetOnLoad将一起工作。 感谢。

小提琴 https://fiddle.sencha.com/#fiddle/1d8m

注意: - 它不是重复的帖子。 this帖子没有回答提取问题。

2 个答案:

答案 0 :(得分:3)

调用Field.setValue()时,isDirty()设置为 true 。要在setValue()之后保留非脏表单,您应该在相应字段中调用resetOriginalValue()

Ext.ComponentQuery.query('#username')[0].setValue ('stackoverflow');
Ext.ComponentQuery.query('#username')[0].resetOriginalValue();
Ext.ComponentQuery.query('#panelFormID')[0].trackResetOnLoad = true;
Ext.ComponentQuery.query('#panelFormID')[0].reset();

答案 1 :(得分:0)

setValues()不是field.setValue(),而是form.setValues()

表单会重置为form.setValues()的最后一个值(以及form.load()form.loadRecord(),其中使用了form.setValues()),如{ {1}}:

src/form/Basic.js