extjs - Bryntum 看板任务单击时出现空选择错误
问题描述
我正在将 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);
}
});
}
});
}
});
}
在重新加载商店之前我需要做些什么以确保不会引发此错误吗?如果有人也遇到过这个问题,我会很感激你的解决方案。正如您在上面的代码中所见,我曾尝试在重新加载之前取消选择所有选项,但这也无济于事。
解决方案
故障排除后,我找到了一个似乎有效的解决方案。在重新加载商店之前,我必须将以下行添加到更改侦听器:
delete field.up('mytaskboard').selModel;
这一行从任务板中删除了所有选择模型,这些模型最初是导致问题的原因。现在视图发生了变化,一切都按预期工作。我仍然很想知道这是否会导致其他问题。
推荐阅读
- java - Zookeeper 不适用于安装在 32 位 Windows 上的 JRE
- java - “pl00092”:空值:IDP 没有回复断言
- tortoisegit - 如何使用 TortoiseGit 执行 git 命令 `git reset --hard origin/master`?
- reporting-services - 计算 SSRS 中条件格式表达式的百分比
- ios - UISearchBar layout inconsistency between iOS 11 and iOS 9.3
- azure - Azure - 我们可以使用服务管理 API 通过 XAMPP 本地主机创建/更新/删除资源吗?
- reactive-programming - 带有 Java Flux API 的数据总线
- magento - 在 magento2 中添加新主题
- prestashop - Prestashop:无法使用地址加载国家/地区-> id_country
- java - Java Spring Boot:在_links中重新运行ManyToOne属性值(id)和url