ExtJS面板ViewModel的getStore()返回null问题排查与解析
ExtJS ViewModel getStore() 返回null问题分析与解决
问题描述
调用ExtJS面板ViewModel的getStore()方法时,未返回绑定了ViewModel数据成员作为URL的本地Ajax Store对象,而是返回null。
复现步骤
- 打开浏览器并启用调试工具查看JavaScript控制台;
- 运行相关示例代码;
- 双击表格行,网格为空,控制台提示
Uncaught TypeError: store is null。首次调用vm.getStore('testStore')返回null,原因在于Store代理的URL绑定了ViewModel数据成员,若无该绑定则首次可正常工作; - 关闭窗口后再次双击行,网格将正常显示数据。
临时解决方案
在调用getStore()前执行vm.notify()即可修复问题(相关代码中已注释该方案)。
深入分析
真实项目中存在类似间歇性问题:复杂表单子组件的vm.notify()触发ViewModel数据成员绑定方法,尝试刷新另一子组件本地Store时,其ViewModel的getStore()返回null。查阅ExtJS 7.6.0官方测试用例发现,绑定的URL数据未设置前,getStore()返回null是预期行为,该特性或为设计使然。
内容的提问来源于stack exchange,提问作者boggy
相关产品推荐
相关产品推荐

