如何覆盖我自己的类或类的包?
重写ExtJS类可行。但我无法完成课程的重写。
这是关于选项Ext.Class.override
:http://docs.sencha.com/extjs/6.2.0/classic/Ext.Class.html#cfg-override
这些是使用Sencha Cmd创建的文件夹:
{Workspace} \ packages \ local \ {package} \ overrides
,
{Workspace} \ {application} \ overrides
答案 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',
...