extjs 4表单在form.reset()之后仍然有记录集;

Ear*_*y73 5 extjs

我有一个绑定到表单的网格,表单提交操作是更新已加载的记录(如果有)并添加新记录(如果它是空白表单).但如果我先选择一条记录然后再打电话

myGrid.getSelectionModel().deselectAll();
myform.getForm().reset(); 
Run Code Online (Sandbox Code Playgroud)

清除表单,以便我可以添加新记录,它会覆盖以前选择的记录并进行更新.

record = myform.getRecord();
if(record){
record.set(values);
}
Run Code Online (Sandbox Code Playgroud)

不应该myform.getRecord(); 重置后为空?如何清除记录选择?

Li0*_*liQ 4

简而言之,不,不应该,并且在第一次通过 加载任何内容后,您没有合法的方法来清除记录loadRecord
虽然,你仍然可以进行myform.getForm()._record = null赋值,但我强烈反对这样做,因为它可能会破坏 ExtJS 的一些内部功能。

以下是 ExtJS API的摘录:

getRecord() : Ext.data.Model
返回通过 loadRecord 加载的最后一个 Ext.data.Model 实例

它正是这样做的,返回通过 加载的最后一条记录loadRecord

以下是一些来源:

getRecord: function() {
    return this._record;
},

loadRecord: function(record) {
    this._record = record;
    return this.setValues(record.data);
},
Run Code Online (Sandbox Code Playgroud)

实际上,这些是处理字段的唯一方法Ext.form.Basic(由 返回的实例) 。getForm()this._record

至于重置

reset: function() {
    var me = this;
    me.batchLayouts(function() {
        me.getFields().each(function(f) {
            f.reset();
        });
    });
    return me;
},
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,重置与返回的记录无关getRecord(),它只是重置字段值。