2012-12-26 34 views
0

我是新來的ext js,但通過入門指南並設法創建了我自己的應用程序。向ext js應用程序注入額外的mvc邏輯

現在我正在構建一個電子商務系統(商店)的插件,並需要動態擴展應用程序。

我已經成功通過猴子打補丁的現有控制器添加一個觀點:

//{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文件,但據我所知,我不能將控制器和視圖,我也不會知道如何自動加載的文件。

有沒有這樣做的首選方法?

編輯 我現在正在構建一個簡單的應用程序,該應用程序之前加載並嘗試注入可用於應用程序的控制器。一旦我準備好了,我會報告回來。

+0

什麼是猴子補丁:)?你在使用ExtJS MVC架構嗎?如果沒有[tut here](http://www.sencha.com/learn/the-mvc-application-architecture/) – A1rPun

+1

是的,我確實使用它,但我試圖擴展它。參見[Monkey Patch](http://en.wikipedia.org/wiki/Monkey_patch)。 – shredding

回答

1

通常我會這樣做,通過攔截控制器事件(使用Ext.ux.Application覆蓋)並在其上添加一些邏輯。或者,您可以擴展現有的控制器,並在整個應用程序中將其替換爲您的自定義控制器,如果可行的話。否則,猴子補丁可能是擴展現有的單一應用程序的唯一方法,這種應用程序不是以可擴展性爲基礎編寫的。

此外,4.2 Beta 2應該很快可用;它包含了大量的MVC改進,包括像上面提到的覆蓋。你可能想看看它。