extjs Bryntum看板任务点击时出现空值选择错误

kgsdhlau  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(171)

我正在将Bryntum看板整合到EXTJS应用程序中。在看板的顶部工具栏中,我有一个ExtJS组合框,它可以更改视图,以便用户可以查看他们的私有任务板以及他们的组的任务板。(用户可以在多个组中)更改视图时,填充任务板的列的状态存储和填充用户选择器的用户存储以及任务存储都需要重新加载。问题是在视图改变之后,单击任务会引发两个错误:

Uncaught TypeError: can't access property "getRange", this.selected is null
    ExtJS 2
    relayMethod http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:6471
    map ExtJS
    relayMethod http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:6470
    deselectAll http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:6446
    deselectAll http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:7431
    onDragStarting http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:7532
    ExtJS 4
    getDragData http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:4896
    ExtJS 86
ext-all-debug.js:200495:9

Uncaught TypeError: can't access property "getRange", this.selected is null
    ExtJS 2
    deselectAllInOtherSelectionModels http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:6465
    each ExtJS
    forEachSelModel http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:6475
    deselectAllInOtherSelectionModels http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:6464
    deselectAllInOtherViews http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:7385
    onTaskClick http://dev.southern-air.com/javascript/taskboard/taskboard-all-debug.js:7381
    ExtJS 2
ext-all-debug.js:200495:9

下面是组合框上的更改侦听器的代码:

change: function (field, newValue) {
    var ts = Ext.data.StoreManager.lookup('taskstore');
    var ss = Ext.data.StoreManager.lookup('statestore');
    var us = Ext.data.StoreManager.lookup('userstore');
    var taskboard = field.up('mytaskboard');
    console.log(taskboard);
    ts.getProxy().setExtraParam('view', newValue);
    ss.getProxy().setExtraParam('view', newValue);
    us.getProxy().setExtraParam('view', newValue);
    taskboard.deselectAll();
    ss.reload({
        callback: function () {
            // taskboard.deselectAll();
            taskboard.refresh();
            us.reload({
                callback: function () {
                    taskboard.userMenu.picker.refresh();
                    ts.reload({
                        callback: function () {
                            console.log(taskboard);
                        }
                    });
                }
            });
        }
    });
}

在我重新加载商店之前,我需要做些什么来确保这个错误不会被抛出吗?如果有人也遇到过这个问题,我希望你能提供解决方案。我试过在重新加载之前取消选择所有商店,正如你在上面的代码中所看到的,但是这也没有帮助。

vmjh9lq9

vmjh9lq91#

在排除故障后,我找到了一个似乎有效的解决方案。在重新加载存储之前,我必须将下面的行添加到更改侦听器中:

delete field.up('mytaskboard').selModel;

这一行从任务板中删除了所有的选择模型,这些模型是最初导致问题的原因。现在视图改变了,一切都按预期运行。我仍然有兴趣知道这是否会导致其他问题。

相关问题