Javascript ExtJS 4-无法读取属性';子串';未定义的

Javascript ExtJS 4-无法读取属性';子串';未定义的,javascript,extjs4,Javascript,Extjs4,我是ExtJS4新手,目前正在开发一个相当复杂的ExtJSMVC应用程序,它遵循本(基础)教程中介绍的体系结构 几乎每次我都会添加一个带有相关模型、控制器和存储的新视图,作为第一步,我必须修复一些错误的别名或id。这变得非常棘手,因为ext并不像我预期的那样帮助我,而且有很多这些id需要查找 使用Firebug时,给我的错误消息是: Uncaught TypeError: Cannot read property 'substring' of undefined localhost:8080/

我是ExtJS4新手,目前正在开发一个相当复杂的ExtJSMVC应用程序,它遵循本(基础)教程中介绍的体系结构

几乎每次我都会添加一个带有相关模型、控制器和存储的新视图,作为第一步,我必须修复一些错误的别名或id。这变得非常棘手,因为ext并不像我预期的那样帮助我,而且有很多这些id需要查找

使用Firebug时,给我的错误消息是:

Uncaught TypeError: Cannot read property 'substring' of undefined localhost:8080/Web/extjs4/ext-debug.js:5246
有没有一种方法可以很快发现错误销售的地方

这是引发异常的代码部分

 parseNamespace: function(namespace) {

            var cache = this.namespaceParseCache,
                parts,
                rewrites,
                root,
                name,
                rewrite, from, to, i, ln;

            if (this.enableNamespaceParseCache) {
                if (cache.hasOwnProperty(namespace)) {
                    return cache[namespace];
                }
            }

            parts = [];
            rewrites = this.namespaceRewrites;
            root = global;
            name = namespace;

            for (i = 0, ln = rewrites.length; i < ln; i++) {
                rewrite = rewrites[i];
                from = rewrite.from;
                to = rewrite.to;
                // 5246 
                if (name === from || name.substring(0, from.length) === from) {
                    name = name.substring(from.length); 

                    if (typeof to != 'string') {
                        root = to;
                    } else {
                        parts = parts.concat(to.split('.'));
                    }

                    break;
                }
            }

            parts.push(root);

            parts = parts.concat(name.split('.'));

            if (this.enableNamespaceParseCache) {
                cache[namespace] = parts;
            }

            return parts;
        },
parseNamespace:function(名称空间){
var cache=this.namespaceParseCache,
部分,
重写,
根,
名称
重写,从,到,i,ln;
if(this.enableNamespaceParseCache){
if(cache.hasOwnProperty(命名空间)){
返回缓存[名称空间];
}
}
部分=[];
rewrites=this.namespaceRewrites;
根=全局;
名称=名称空间;
对于(i=0,ln=rewrites.length;i

提前谢谢

我使用console.log(Ext.getClassName(someObj))检查代码是否正常;--有时候JSLint可以帮助您找到未使用的变量——祝您好运

一个好的实践就是尽可能简单地保持ID。