Javascript 将记录添加到存储
我有一个可编辑的网格、存储和一个按钮。 该按钮有一个处理程序,用于复制所选记录并将副本添加到存储:Javascript 将记录添加到存储,javascript,extjs,Javascript,Extjs,我有一个可编辑的网格、存储和一个按钮。 该按钮有一个处理程序,用于复制所选记录并将副本添加到存储: var a = gridPanel.getSelectionModel().getSelectedCell(); var rec = store.getAt(a[0]).copy(); store.addSorted(rec); alert (store.getAt(1).get('date')); 但是存储和网格没有更新。警报有错误-无法调用未定义的方法 这里的问题是
var a = gridPanel.getSelectionModel().getSelectedCell();
var rec = store.getAt(a[0]).copy();
store.addSorted(rec);
alert (store.getAt(1).get('date'));
但是存储和网格没有更新。警报有错误-无法调用未定义的方法
这里的问题是什么?问题可能是复制的记录具有相同的id,因此当您将其插入存储时,另一个具有相同id的记录已经存在 如果在将复制的记录添加到存储区之前生成新id并将其应用于该记录,则该id应能正常工作。以下代码在作为参数传递的记录中生成一个新ID。检查的文件
大多数JavaScript开发人员应该做的几件事:
if(this.containsKey(key)){
this.suspendEvents();
this.removeKey(key);
this.resumeEvents();
}
要生成具有唯一密钥的记录,可以执行以下操作:
var rec = store.getAt(a[0]).copy();
var id = Ext.data.Record.id(id);
rec.id = id;
代码看起来很混乱,但是没有很多好的方法。如果是我,我会覆盖复制函数,以使用布尔值强制自动生成记录的id。谢谢您的建议。我正在使用铬“检查元素”-对我来说很好。我知道rec没有插入,但我不明白为什么。在ExtJS 6.2.1到6.6.0中,这可以通过使用此模型的方法及其参数来实现
var rec = store.getAt(a[0]).copy();
var id = Ext.data.Record.id(id);
rec.id = id;