Extjs - 当 trackResetOnLoad 为真时,reset() 不加载最后一个值
Extjs - reset() not loading last value when trackResetOnLoad is true
Extjs 文档trackResetOnLoad
If set to true, reset() resets to the last loaded or setValues() data
instead of when the form was first created. Defaults to: false
在我的表单中,我将 trackResetOnLoad 设置为 true,在 Afterrender 函数中,我使用 setValue() 更新了值并调用了 Reset 函数。 trackResetOnLoad 未重置为上一个值(setvalue())。
我是否错误地使用了 trackResetOnLoad 配置选项?如果可能,请解释重置、setValue 和 trackResetOnLoad 将如何协同工作。
谢谢
Fiddle
https://fiddle.sencha.com/#fiddle/1d8m
注意:- 它不是重复的 post。 this post 没有回答摘录问题。
setValues()
不是指 field.setValue()
,而是指 form.setValues()
。
表单重置为 form.setValues()
的最后值(以及 form.load()
和 form.loadRecord()
,它们在幕后使用 form.setValues()
),如您所见在 src/form/Basic.js
:
loadRecord: function(record) {
this._record = record;
return this.setValues(record.getData());
},
setValues: function(values) {
var me = this,
v, vLen, val;
function setVal(fieldId, val) {
var field = me.findField(fieldId);
if (field) {
field.setValue(val);
if (me.trackResetOnLoad) {
field.resetOriginalValue();
...
调用Field.setValue()
时,isDirty()
设置为true。要在 setValue()
之后保持表单 non-dirty,您应该在相应的字段上调用 resetOriginalValue()
。
Ext.ComponentQuery.query('#username')[0].setValue ('Whosebug');
Ext.ComponentQuery.query('#username')[0].resetOriginalValue();
Ext.ComponentQuery.query('#panelFormID')[0].trackResetOnLoad = true;
Ext.ComponentQuery.query('#panelFormID')[0].reset();
Extjs 文档trackResetOnLoad
If set to true, reset() resets to the last loaded or setValues() data instead of when the form was first created. Defaults to: false
在我的表单中,我将 trackResetOnLoad 设置为 true,在 Afterrender 函数中,我使用 setValue() 更新了值并调用了 Reset 函数。 trackResetOnLoad 未重置为上一个值(setvalue())。
我是否错误地使用了 trackResetOnLoad 配置选项?如果可能,请解释重置、setValue 和 trackResetOnLoad 将如何协同工作。 谢谢
Fiddle https://fiddle.sencha.com/#fiddle/1d8m
注意:- 它不是重复的 post。 this post 没有回答摘录问题。
setValues()
不是指 field.setValue()
,而是指 form.setValues()
。
表单重置为 form.setValues()
的最后值(以及 form.load()
和 form.loadRecord()
,它们在幕后使用 form.setValues()
),如您所见在 src/form/Basic.js
:
loadRecord: function(record) {
this._record = record;
return this.setValues(record.getData());
},
setValues: function(values) {
var me = this,
v, vLen, val;
function setVal(fieldId, val) {
var field = me.findField(fieldId);
if (field) {
field.setValue(val);
if (me.trackResetOnLoad) {
field.resetOriginalValue();
...
调用Field.setValue()
时,isDirty()
设置为true。要在 setValue()
之后保持表单 non-dirty,您应该在相应的字段上调用 resetOriginalValue()
。
Ext.ComponentQuery.query('#username')[0].setValue ('Whosebug');
Ext.ComponentQuery.query('#username')[0].resetOriginalValue();
Ext.ComponentQuery.query('#panelFormID')[0].trackResetOnLoad = true;
Ext.ComponentQuery.query('#panelFormID')[0].reset();