在ExtJS中覆盖您的包

时间:2017-07-10 10:57:37

标签: extjs

如何覆盖我自己的类或类的包?

重写ExtJS类可行。但我无法完成课程的重写。

这是关于选项Ext.Class.overridehttp://docs.sencha.com/extjs/6.2.0/classic/Ext.Class.html#cfg-override

这些是使用Sencha Cmd创建的文件夹:
{Workspace} \ packages \ local \ {package} \ overrides
{Workspace} \ {application} \ overrides

2 个答案:

答案 0 :(得分:1)

它适用于您自己的类,与Sencha类相同。不确定为什么你需要它,并且不确定它为什么不适合你,但我刚刚在我的应用程序中创建了一个新的覆盖:

Ext.define('MyApp.override.MyOwnOverrideTest',{
    override: 'MyApp.view.main.HeaderBar',
    constructor: function() {
        console.log('Constructor of override called!');
        this.callParent(arguments); // Call original constructor.
    }
});

并将其添加到Application.js中的需求中,就像我对原始ExtJS类的几十个覆盖一样:

requires: [
    'MyApp.override.MyOwnOverrideTest',

然后我在浏览器中加载了应用程序。该类在应用程序启动时实例化一次,我在浏览器控制台中找到了预期的输出:

https://i.imgur.com/UrHNnig.png

请注意我可以将该行添加到我自己的类中,没有人会注意到这一点,因此对于属于同一项目/包的类,覆盖是没有意义的。

答案 1 :(得分:0)

我使用新类定义的'extend'属性。例如,

Ext.define('MyApp.view.main.ItemMenu', {
   extend: 'MyApp.view.main.AbstractMenu',
   ...