一、对基本的form或者xtype为formpanel的组件,经常会出现 每次调用form的isDirty()方法返回的都是true,这种情况下其实可以去看下API,
- /**
- * @cfg {Boolean} trackResetOnLoad
- * 如果为true,则表单对象的form.reset()方法重置到最后一次加载的数据或setValues()数据,以相对于一开始创建表单那时的数据。
- * If set to true, form.reset() resets to the last loaded or setValues() data instead of when the form was first created.
- */
- trackResetOnLoad : false,
trackResetOnLoad是在form表单load数据的时候是否记录字段原始值的开关。
在setVlaues中会根据这个开关进行判断,如果为true就记录这个数据。
所以你可以在初始化 form的时候给他的trackResetOnLoad属性置为true.
1、以上适用于类似于新增打开的form判断。如果是类似点击修改的操作,必须修改
form的originalValue,在loadRecord数据后,再次给原始值复制:
- form.getForm().items.each(function(f){
- f.originalValue=String(f.getValue());
- });
2、如果form不是通过setValues或loadRecord来赋值,而是单个组件分别赋值trackResetOnLoad的值可不用配置。
form.setConfig("trackResetOnLoad",true);
form.setValues(obj);
form.reset.
接下去用isDirty()取判断时候回以setValues()以后改变的值作为有么有修改的标准。
1633



被折叠的 条评论
为什么被折叠?



