2012-12-26 1 views
0

저는 ext js를 처음 사용하지만 시작 안내서를 읽고 나만의 응용 프로그램을 만들었습니다.ext js app에 추가 mvc 논리 삽입

이제는 전자 상거래 시스템 (shopware) 용 플러그인을 구축 중이며 앱을 동적으로 확장해야합니다.

나는 기존의 컨트롤러를 패치 원숭이로보기를 추가 관리했습니다 :

//{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 아키텍처를 사용하고 있습니까? 그렇지 않다면 (http://www.sencha.com/learn/the-mvc-application-architecture/) – A1rPun

+1

예, 사용하고 있지만 확장하려고합니다. [원숭이 패치] (http://en.wikipedia.org/wiki/Monkey_patch)를 참조하십시오. – shredding

답변

1

일반적으로 컨트롤러 이벤트를 가로 채고 (Ext.ux.Application 무시)이 작업을 수행하고 그 위에 몇 가지 로직을 추가합니다. 또는 가능하면 기존 컨트롤러를 확장하여 전체 앱에서 맞춤 컨트롤러로 교체 할 수 있습니다. 그렇지 않으면 원숭이 패치가 확장 성을 염두에두고 작성된 기존의 단일 응용 프로그램을 확장하는 유일한 방법 일 수 있습니다.

또한 4.2 베타 2가 곧 제공 될 예정입니다. 위에서 언급 한 오버라이드 (override)와 같은 것을 포함하여 MVC 개선 사항 전체를 포함합니다. 좀 더 살펴보고 싶을 수도 있습니다.