0

我是 ext js 的新手,但通过了入门指南并设法创建了我自己的应用程序。

现在我正在为电子商务系统(商店软件)构建一个插件,并且需要动态扩展一个应用程序。

我设法通过猴子修补现有控制器来添加视图:

//{extends file="[default]backend/article/controller/main.js"}
//{namespace name=backend/article/view/main}
//{block name="backend/article/controller/main" append}
Ext.define('Shopware.apps.Article.controller.MyApp', {
    override: 'Shopware.apps.Article.controller.Main',
    openMainWindow: function() {
        var me         = this,
            mainwindow = me.callOverridden();    
            oldTabCreation  = mainwindow.createMainTabPanel;
            mainwindow.createMainTabPanel = function() {
                  mainTab = oldTabCreation.apply(this);
                  mainTab.add(
                      Ext.create('Ext.panel.Panel',
                          {
                                title: 'Pricify',
                                layout: 'card'
                          })
                  );
                  return mainTab;
            };
        return mainwindow;
    }
});
//{/block}

这行得通。我不确定这是否是首选方式,但视图会在正确的位置加载,我很高兴(因为这花了我几个小时)。

但还有一段路要走。

我将如何在这里注入整个逻辑?

我的要求是:

  • 我需要一个控制器、一个视图和一个商店/模型
  • 最好在自己的命名空间中
  • 我想将我的类分成文件。
  • 该文件必须位于插件文件夹中,而不是原始应用程序文件夹中。

我可以将代码附加到 app.js 文件中,但据我所知,我无法附加控制器和视图,也不知道如何自动加载文件。

有什么首选的方法吗?

编辑 我现在正在构建一个简单的应用程序,该应用程序之前已加载并尝试将随后可用的控制器注入应用程序。准备好后,我会回来报告。

4

1 回答 1

1

通常我会通过拦截控制器事件(使用Ext.ux.Application覆盖)并在其上添加一些逻辑来做这样的事情。或者,如果可行,您可以扩展现有控制器并将其替换为整个应用程序中的自定义控制器。否则,monkey patching 可能是扩展现有单体应用程序的唯一方法,而该应用程序没有考虑到可扩展性。

此外,4.2 Beta 2 应该很快就会推出;它包括一大堆 MVC 改进,包括上面提到的覆盖。你可能想看看它。

于 2013-01-08T22:03:40.633 回答