我正在将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);
}
});
}
});
}
});
}
在我重新加载商店之前,我需要做些什么来确保这个错误不会被抛出吗?如果有人也遇到过这个问题,我希望你能提供解决方案。我试过在重新加载之前取消选择所有商店,正如你在上面的代码中所看到的,但是这也没有帮助。
1条答案
按热度按时间vmjh9lq91#
在排除故障后,我找到了一个似乎有效的解决方案。在重新加载存储之前,我必须将下面的行添加到更改侦听器中:
这一行从任务板中删除了所有的选择模型,这些模型是最初导致问题的原因。现在视图改变了,一切都按预期运行。我仍然有兴趣知道这是否会导致其他问题。