在使用Sencha(ExtJS6)的过程中遇到一个诡异的问题。
往TabPanel中添加一个Panel,添加的时候设置Panel的itemId,为了省事,直接用uuid生成的编号作为itemId的值。
诡异的事情发生了。 浏览器报错 :
这个错误并不是每次必报,偶尔发生。刚开始怀疑是某些资源没有清理,但又找不到具体的问题。把itemId改为id,故障依然。最后跟踪代码,找到抛出异常的这段代码:
//<debug>
if (!me.validIdRe.test(me.id)) {
Ext.raise('Invalid component "id": "' + me.id + '"');
}
if (!me.validIdRe.test(me.itemId)) {
Ext.raise('Invalid component "itemId": "' + me.itemId + '"');
}
//</debug>
跟着查看了一下的值:
/^[a-z_][a-z0-9\-_]*$/i
明白了,itemId和id只能是字母或下划线开头。为itemId加个字母前缀,问题解决!