我正在尝试将我的项目从 ExtJS 4.1 移动到 4.2,但我收到了一个奇怪的错误。每次我将存储(我正在使用缓冲存储)加载到我的网格后,我都会收到这样的错误
TypeError: records is undefined
if (records.length < 1) {
string number 134635
它可以是什么?
我正在尝试将我的项目从 ExtJS 4.1 移动到 4.2,但我收到了一个奇怪的错误。每次我将存储(我正在使用缓冲存储)加载到我的网格后,我都会收到这样的错误
TypeError: records is undefined
if (records.length < 1) {
string number 134635
它可以是什么?
在使用缓冲存储从 4.1 迁移到 4.2 后,我也收到了这个错误。这似乎是由在网格中进行选择然后调用 store.load() 引起的。两种解决方法:
1) 添加对 extjs 源代码的修复(呃)(请参阅此博客文章,使用谷歌翻译):http ://blog.khodam.org/extjs/upgrade-guide-extjs-4-1-dan-extjs -4-2-menghindari-error-dan-abnormal-behaviour-pada-extjs-4-2-0.php
2)在重新加载商店之前删除选择,例如:
grid.getSelectionModel().deselectAll(true);
store.load();
(您需要使用自己的网格/存储变量,或使用 Ext.getCmp() 等进行查找)。
我也遇到了这个问题,非常感谢 George Geczy,他在 sencha 论坛上找到了 Daniil的解决方案。
解决此问题的最佳方法是像这样覆盖“storeHasSelected”事件:
Ext.selection.Model.override({
storeHasSelected: function(record) {
var store = this.store,
records,
len, id, i;
if (record.hasId() && /*store.getById(record)*/ store.getById(record.getId())) {
return true;
} else {
records = store.data.items;
len = records.length;
id = record.internalId;
for (i = 0; i < len; ++i) {
if (id === records[i].internalId) {
return true;
}
}
}
return false;
}
});
1)我不建议编辑 extjs 源代码,它可能会花费很多可怕的时间来搜索“如何修复修复”。
2)在重新加载商店之前移除选择是不够的,还需要覆盖分页工具栏中的刷新按钮。