ExtJS4到ExtJs5 Migation - ext-all-debug.js - cacheRefEls-function

时间:2014-10-31 07:37:36

标签: extjs4 migration extjs5

我正在将项目从ExtJs4迁移到ExtJs5

在我的 Firefox(版本33.0.2) -Debug-View (Firebug版本2.0.4)中,我可以看到以下控制台输出,刷新浏览器窗口后:

TypeError: dom.querySelectorAll is not a function
http://localhost:8080/ext/build/ext-all-debug.js
Line 34531

如何解决该错误 如何找出我自己的代码的哪一部分导致 ext-all-debug.js 唠叨?

1 个答案:

答案 0 :(得分:0)

在放置多个 console.log()之后,我将 ext-all-debug.js 中定义的原生ExtJs5 cacheRefEls 功能调整为以下内容/ strong>进入它,这表明dom没有返回树:

cacheRefEls: function(el) {
    el = el || this.el;

    var cache = null;
        try{
            cache = Ext.cache,
            El = Ext.dom.Element,
            dom = el.isElement ? el.dom : el,
            refs = dom.querySelectorAll('[data-ref]'),
            len = refs.length,
            ref, i;
            //console.log("Success: 'Nodelist' returned by 'el.dom.querySelectorAll('[data-ref]')' for el--->"+el + " 'cache-variable is set!'");
         }catch(err){
             //console.log("Error: No 'Nodelist' returned by 'el.dom.querySelectorAll('[data-ref]')' for el--->"+el + " 'Couldn't set cache-variable!'");
         }

         for (i = 0; i < len; i++) {
             ref = refs[i];
             if (!cache[ref.id]) {
                  new El(ref);
             }
         }
}

这样可以避免 el 访问没有这样树的 el ,例如文字 - 对象。

P.S。:谨慎使用此修复程序,因为它使用Sencha提供的本机代码。