我正在尝试将我的项目从ExtJS 4.1移动到4.2,我收到了一个奇怪的错误。每次我加载存储(我使用缓冲存储)到我的网格后,我收到这样的错误
TypeError: records is undefined
if (records.length < 1) {
string number 134635
This is link to my grid-making js file
And this is link to my store-init file
它可以是什么?
答案 0 :(得分:4)
使用缓冲存储从4.1迁移到4.2后,我也收到了此错误。它似乎是由在网格中进行选择然后调用store.load()引起的。两个解决方法:
1)为extjs源代码添加修复程序(ugh)(请参阅此博客文章,使用谷歌翻译):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()等进行查找。)
答案 1 :(得分:0)
我也遇到了这个问题,非常感谢George Geczy在Sencha论坛找到了Daniil的solution。
解决此问题的最佳方法是覆盖'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)在重新加载商店之前删除选择是不够的,还需要覆盖pagingtoolbar中的刷新按钮。