-1

我正在尝试将我的项目从 ExtJS 4.1 移动到 4.2,但我收到了一个奇怪的错误。每次我将存储(我正在使用缓冲存储)加载到我的网格后,我都会收到这样的错误

TypeError: records is undefined

if (records.length < 1) { 
string number 134635

这是我的网格制作 js 文件的链接

这是我的 store-init 文件的链接

它可以是什么?

4

2 回答 2

4

在使用缓冲存储从 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() 等进行查找)。

于 2013-07-24T07:08:49.910 回答
0

我也遇到了这个问题,非常感谢 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)在重新加载商店之前移除选择是不够的,还需要覆盖分页工具栏中的刷新按钮。

于 2015-07-17T22:08:54.427 回答