• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

DragonflyZ

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3