Extjs6 form.reset()无法保持默认信息的bug


根据如上两张图片可知,如果使用form.loadRecord()加载默认数据后,再使用form.reset()方法是会默认(只要不传参数true)重置为默认数据的,然而事实上会重置清空.
打开reset源码如下:
reset: function(resetRecord) { Ext.suspendLayouts(); var me = this, fields = me.getFields().items, f, fLen = fields.length; for (f = 0; f < fLen; f++) { fields[f].reset(); } Ext.resumeLayouts(true); if (resetRecord === true) { delete me._record; } return me; },
由上面代码可见,reset在清空表单数据后,没有做任何的数据恢复处理.只是对传入参数为true的情况作了删除form本身持有的一个record的处理
推测me._record应该就是我们form. loadRecord(record)时传入的record,
所以对源码做修改如下:
reset: function(resetRecord) { Ext.suspendLayouts(); var me = this, fields = me.getFields().items, f, fLen = fields.length; for (f = 0; f < fLen; f++) { fields[f].reset(); } Ext.resumeLayouts(true); if (resetRecord !== true &&!Ext.isEmpty(me._record) ) { // delete me._record; me.setValues(me._record.getData()); } return me; },
测试后果然正常了~
posted on 2017-03-16 10:24 DragonflyZ 阅读(435) 评论(0) 收藏 举报
浙公网安备 33010602011771号