ExtJs5 - 覆盖ext-all-debug.js中定义的本机方法

时间:2014-11-03 11:02:18

标签: firefox extjs migration override firebug

假设我想在 ext-all-debug.js 文件中覆盖 Sencha提供的本机代码中的函数。

该函数在 Ext.util.Renderable -class中定义,名称为 cacheRefEls

覆盖应在项目的 index.html 内进行,以便日后发布更容易维护。


我已经已经尝试了此线程中提出的覆盖解决方案:

Steps to overriding Sencha ExtJS standard component functionality (Ext.tree.Panel & Ext.data.TreeStore as two examples)


我的index.html如下所示:

<html>
...
<script type="text/javascript">
    Ext.define('Myapp.view.Renderable', {
        override: 'Ext.util.Renderable',
        cacheRefEls: function(el) {
              console.log("in overider method");
             //my adapted version of it
        }   
    });
</script>
...
</html>

不幸的是,通过 Firefox-33 访问 localhost:8080 后,从 Firebug-2-Console-log 可以看到它仍然显示使用函数的原生版本。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:8)

在ExtJS 5中,您需要将这些方法移至privates配置。

你应该看到错误:

  

公共方法“cacheRefEls”与Ext.util.Renderable声明的私有框架方法冲突

您仍然可以覆盖私有方法。在您的情况下,解决方案将是:

Ext.define('Myapp.view.Renderable', {
    override: 'Ext.util.Renderable',
    privates: {
       cacheRefEls: function(el) {
          console.log("in overider method");
         //my adapted version of it
       }
    }   
});